Documentation ¶
Overview ¶
Package drivers handles the registration, default implementation, and handles hooks for usql database drivers.
Index ¶
- func Available() map[string]Driver
- func BatchAsTransaction(u *dburl.URL) bool
- func CanChangePassword(u *dburl.URL) error
- func ChangePassword(u *dburl.URL, db DB, user, new, old string) (string, error)
- func ColumnTypes(u *dburl.URL) func(*sql.ColumnType) (interface{}, error)
- func Columns(u *dburl.URL, rows *sql.Rows) ([]string, error)
- func ConfigStmt(u *dburl.URL, s *stmt.Stmt)
- func ConvertBytes(u *dburl.URL) func([]byte, string) (string, error)
- func ConvertDefault(u *dburl.URL) func(interface{}) (string, error)
- func ConvertMap(u *dburl.URL) func(map[string]interface{}) (string, error)
- func ConvertSlice(u *dburl.URL) func([]interface{}) (string, error)
- func Copy(ctx context.Context, u *dburl.URL, stdout, stderr func() io.Writer, ...) (int64, error)
- func CopyWithInsert(placeholder func(int) string) ...
- func ForceParams(u *dburl.URL)
- func ForceQueryParameters(params []string) func(*dburl.URL)
- func IsBatchQueryPrefix(u *dburl.URL, prefix string) (string, string, bool)
- func IsPasswordErr(u *dburl.URL, err error) bool
- func Lexer(u *dburl.URL) chroma.Lexer
- func LowerColumnNames(u *dburl.URL) bool
- func NewCompleter(ctx context.Context, u *dburl.URL, db DB, readerOpts []metadata.ReaderOption, ...) readline.AutoCompleter
- func NewMetadataReader(ctx context.Context, u *dburl.URL, db DB, w io.Writer, ...) (metadata.Reader, error)
- func NewMetadataWriter(ctx context.Context, u *dburl.URL, db DB, w io.Writer, ...) (metadata.Writer, error)
- func NewStmt(u *dburl.URL, f func() ([]rune, error), opts ...stmt.Option) *stmt.Stmt
- func Open(ctx context.Context, u *dburl.URL, stdout, stderr func() io.Writer) (*sql.DB, error)
- func Ping(ctx context.Context, u *dburl.URL, db *sql.DB) error
- func Process(u *dburl.URL, prefix, sqlstr string) (string, string, bool, error)
- func QueryExecType(prefix, sqlstr string) (string, bool)
- func Register(name string, d Driver, aliases ...string)
- func Registered(name string) bool
- func RequirePreviousPassword(u *dburl.URL) bool
- func RowsAffected(u *dburl.URL, res sql.Result) (int64, error)
- func UseColumnTypes(u *dburl.URL) bool
- func User(ctx context.Context, u *dburl.URL, db DB) (string, error)
- func Version(ctx context.Context, u *dburl.URL, db DB) (string, error)
- func WrapErr(driver string, err error) error
- type DB
- type Driver
- type Error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BatchAsTransaction ¶
BatchAsTransaction returns whether or not a driver requires batched queries to be done within a transaction block.
func CanChangePassword ¶
CanChangePassword returns whether or not the a driver supports changing passwords.
func ChangePassword ¶
ChangePassword initiates a user password change for the a driver. If user is not supplied, then the current user will be retrieved from User.
func ColumnTypes ¶
func ColumnTypes(u *dburl.URL) func(*sql.ColumnType) (interface{}, error)
ColumnTypes returns the column types callback for a driver.
func ConfigStmt ¶
ConfigStmt sets the stmt.Stmt options for a driver.
func ConvertBytes ¶
ConvertBytes returns a func to handle converting bytes for a driver.
func ConvertDefault ¶
ConvertDefault returns a func to handle converting a interface{} for a driver.
func ConvertMap ¶
ConvertMap returns a func to handle converting a map[string]interface{} for a driver.
func ConvertSlice ¶
ConvertSlice returns a func to handle converting a []interface{} for a driver.
func Copy ¶
func Copy(ctx context.Context, u *dburl.URL, stdout, stderr func() io.Writer, rows *sql.Rows, table string) (int64, error)
Copy copies the result set to the destination sql.DB.
func CopyWithInsert ¶
func CopyWithInsert(placeholder func(int) string) func(ctx context.Context, db *sql.DB, rows *sql.Rows, table string) (int64, error)
CopyWithInsert builds a copy handler based on insert.
func ForceParams ¶
ForceParams forces parameters on the DSN for a driver.
func ForceQueryParameters ¶
ForceQueryParameters is a utility func that wraps forcing params of name, value pairs.
func IsBatchQueryPrefix ¶
IsBatchQueryPrefix returns whether or not the supplied query prefix is a batch query prefix, and the closing prefix. Used to direct the handler to continue accumulating statements.
func IsPasswordErr ¶
IsPasswordErr returns true if an err is a password error for a driver.
func LowerColumnNames ¶
LowerColumnNames returns whether or not column names should be converted to lower case for a driver.
func NewCompleter ¶
func NewCompleter(ctx context.Context, u *dburl.URL, db DB, readerOpts []metadata.ReaderOption, opts ...completer.Option) readline.AutoCompleter
NewCompleter creates a metadata completer for a driver and database connection.
func NewMetadataReader ¶
func NewMetadataReader(ctx context.Context, u *dburl.URL, db DB, w io.Writer, opts ...metadata.ReaderOption) (metadata.Reader, error)
NewMetadataReader wraps creating a new database introspector for a driver.
func NewMetadataWriter ¶
func NewMetadataWriter(ctx context.Context, u *dburl.URL, db DB, w io.Writer, opts ...metadata.ReaderOption) (metadata.Writer, error)
NewMetadataWriter wraps creating a new database metadata printer for a driver.
func QueryExecType ¶
QueryExecType is the default way to determine the "EXEC" prefix for a SQL query and whether or not it should be Exec'd or Query'd.
func Registered ¶
Registered returns whether or not a driver is registered.
func RequirePreviousPassword ¶
RequirePreviousPassword returns true if a driver requires a previous password when changing a user's password.
func RowsAffected ¶
RowsAffected returns the rows affected for the SQL result for a driver.
func UseColumnTypes ¶
UseColumnTypes returns whether or not a driver should uses column types.
Types ¶
type DB ¶
type DB interface { Exec(string, ...interface{}) (sql.Result, error) ExecContext(context.Context, string, ...interface{}) (sql.Result, error) Query(string, ...interface{}) (*sql.Rows, error) QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) QueryRow(string, ...interface{}) *sql.Row QueryRowContext(context.Context, string, ...interface{}) *sql.Row Prepare(string) (*sql.Stmt, error) PrepareContext(context.Context, string) (*sql.Stmt, error) }
DB is the common interface for database operations, compatible with database/sql.DB and database/sql.Tx.
type Driver ¶
type Driver struct { // Name is a name to override the driver name with. Name string // AllowDollar will be passed to query buffers to enable dollar ($$) style // strings. AllowDollar bool // AllowMultilineComments will be passed to query buffers to enable // multiline (/**/) style comments. AllowMultilineComments bool // AllowCComments will be passed to query buffers to enable C (//) style // comments. AllowCComments bool // AllowHashComments will be passed to query buffers to enable hash (#) // style comments. AllowHashComments bool // RequirePreviousPassword will be used by RequirePreviousPassword. RequirePreviousPassword bool // LexerName is the name of the syntax lexer to use. LexerName string // LowerColumnNames will cause column names to be lowered cased. LowerColumnNames bool // UseColumnTypes will cause database's ColumnTypes func to be used for // types. UseColumnTypes bool // ForceParams will be used to force parameters if defined. ForceParams func(*dburl.URL) // Open will be used by Open if defined. Open func(context.Context, *dburl.URL, func() io.Writer, func() io.Writer) (func(string, string) (*sql.DB, error), error) // Version will be used by Version if defined. Version func(context.Context, DB) (string, error) // User will be used by User if defined. User func(context.Context, DB) (string, error) // ChangePassword will be used by ChangePassword if defined. ChangePassword func(DB, string, string, string) error // IsPasswordErr will be used by IsPasswordErr if defined. IsPasswordErr func(error) bool // Process will be used by Process if defined. Process func(*dburl.URL, string, string) (string, string, bool, error) // ColumnTypes is a callback that will be used if ColumnTypes func(*sql.ColumnType) (interface{}, error) // RowsAffected will be used by RowsAffected if defined. RowsAffected func(sql.Result) (int64, error) // Err will be used by Error.Error if defined. Err func(error) (string, string) // ConvertBytes will be used by ConvertBytes to convert a raw []byte // slice to a string if defined. ConvertBytes func([]byte, string) (string, error) // ConvertMap will be used by ConvertMap to convert a map[string]interface{} // to a string if defined. ConvertMap func(map[string]interface{}) (string, error) // ConvertSlice will be used by ConvertSlice to convert a []interface{} to // a string if defined. ConvertSlice func([]interface{}) (string, error) // ConvertDefault will be used by ConvertDefault to convert a interface{} // to a string if defined. ConvertDefault func(interface{}) (string, error) // BatchAsTransaction will cause batched queries to be done in a // transaction block. BatchAsTransaction bool // BatchQueryPrefixes will be used by BatchQueryPrefixes if defined. BatchQueryPrefixes map[string]string // NewMetadataReader returns a db metadata introspector. NewMetadataReader func(db DB, opts ...metadata.ReaderOption) metadata.Reader // NewMetadataWriter returns a db metadata printer. NewMetadataWriter func(db DB, w io.Writer, opts ...metadata.ReaderOption) metadata.Writer // NewCompleter returns a db auto-completer. NewCompleter func(db DB, opts ...completer.Option) readline.AutoCompleter // Copy rows into the database table Copy func(ctx context.Context, db *sql.DB, rows *sql.Rows, table string) (int64, error) }
Driver holds funcs for a driver.
Directories ¶
Path | Synopsis |
---|---|
Package cassandra defines and registers usql's Cassandra driver.
|
Package cassandra defines and registers usql's Cassandra driver. |
completer package provides a generic SQL command line completer
|
completer package provides a generic SQL command line completer |
Package cosmos defines and registers usql's Azure CosmosDB driver.
|
Package cosmos defines and registers usql's Azure CosmosDB driver. |
Package csvq defines and registers usql's CSVQ driver.
|
Package csvq defines and registers usql's CSVQ driver. |
informationschema
Package informationschema provides metadata readers that query tables from the information_schema schema.
|
Package informationschema provides metadata readers that query tables from the information_schema schema. |
oracle
Package oracle provides a metadata reader
|
Package oracle provides a metadata reader |
postgres
Package postgres provides a metadata reader
|
Package postgres provides a metadata reader |
Package mymysql defines and registers usql's MySQL MyMySQL driver.
|
Package mymysql defines and registers usql's MySQL MyMySQL driver. |
Package mysql defines and registers usql's MySQL driver.
|
Package mysql defines and registers usql's MySQL driver. |
Package odbc defines and registers usql's ODBC driver.
|
Package odbc defines and registers usql's ODBC driver. |
Package oracle defines and registers usql's Oracle Database driver.
|
Package oracle defines and registers usql's Oracle Database driver. |
orshared
Package orshared contains shared a shared driver implementation for the Oracle Database.
|
Package orshared contains shared a shared driver implementation for the Oracle Database. |
Package postgres defines and registers usql's PostgreSQL driver.
|
Package postgres defines and registers usql's PostgreSQL driver. |
Package ql defines and registers usql's Cznic QL driver.
|
Package ql defines and registers usql's Cznic QL driver. |
Package snowflake defines and registers usql's Snowflake driver.
|
Package snowflake defines and registers usql's Snowflake driver. |
Package sqlite3 defines and registers usql's SQLite3 driver.
|
Package sqlite3 defines and registers usql's SQLite3 driver. |
sqshared
Package sqshared contains shared types for the sqlite3 and moderncsqlite drivers.
|
Package sqshared contains shared types for the sqlite3 and moderncsqlite drivers. |
Package sqlserver defines and registers usql's Microsoft SQL Server driver.
|
Package sqlserver defines and registers usql's Microsoft SQL Server driver. |