Documentation
¶
Index ¶
- func FormatParamNameInNumberedPosition(paramNames []string) string
- func FormatParamNameInQuestionMark(paramNames []string) string
- func Register(dbType Type, f driverFunc)
- type Column
- type ConnectionConfig
- type ConnectionContext
- type Driver
- type DriverConfig
- type Index
- type MigrationHistory
- type MigrationHistoryFind
- type MigrationInfo
- type MigrationInfoPayload
- type MigrationSource
- type MigrationStatus
- type MigrationType
- type Schema
- type TLSConfig
- type Table
- type Type
- type User
- type View
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FormatParamNameInNumberedPosition ¶
FormatParamNameInNumberedPosition formats the param name in numbered positions.
func FormatParamNameInQuestionMark ¶
FormatParamNameInQuestionMark formats the param name in question mark. For example, it will be WHERE hello = ? AND world = ?.
Types ¶
type Column ¶
type Column struct {
Name string
Position int
Default *string
// Nullable isn't supported for ClickHouse.
Nullable bool
Type string
// CharacterSet isn't supported for Postgres, ClickHouse, SQLite.
CharacterSet string
// Collation isn't supported for ClickHouse, SQLite.
Collation string
// Comment isn't supported for SQLite.
Comment string
}
Column the database table column.
type ConnectionConfig ¶
type ConnectionConfig struct {
Host string
Port string
Username string
Password string
Database string
TLSConfig TLSConfig
// ReadOnly is only supported for Postgres at the moment.
ReadOnly bool
}
ConnectionConfig is the configuration for connections.
type ConnectionContext ¶
ConnectionContext is the context for connection. It's not used for establishing the db connection, but is useful for logging.
type Driver ¶
type Driver interface {
// A driver might support multiple engines (e.g. MySQL driver can support both MySQL and TiDB),
// So we pass the dbType to tell the exact engine.
Open(ctx context.Context, dbType Type, config ConnectionConfig, connCtx ConnectionContext) (Driver, error)
// Remember to call Close to avoid connection leak
Close(ctx context.Context) error
Ping(ctx context.Context) error
GetDbConnection(ctx context.Context, database string) (*sql.DB, error)
GetVersion(ctx context.Context) (string, error)
SyncSchema(ctx context.Context) ([]*User, []*Schema, error)
Execute(ctx context.Context, statement string, useTransaction bool) error
// Used for execute readonly SELECT statement
// limit is the maximum row count returned. No limit enforced if limit <= 0
Query(ctx context.Context, statement string, limit int) ([]interface{}, error)
// Migration related
// Check whether we need to setup migration (e.g. creating/upgrading the migration related tables)
NeedsSetupMigration(ctx context.Context) (bool, error)
// Create or upgrade migration related tables
SetupMigrationIfNeeded(ctx context.Context) error
// Execute migration will apply the statement and record the migration history, the schema after migration on success.
// The migration type is determined by m.Type. Note, it can also perform data migration (DML) in addition to schema migration (DDL).
// It returns the migration history id and the schema after migration on success.
ExecuteMigration(ctx context.Context, m *MigrationInfo, statement string) (int64, string, error)
// Find the migration history list and return most recent item first.
FindMigrationHistoryList(ctx context.Context, find *MigrationHistoryFind) ([]*MigrationHistory, error)
// Dump and restore
// Dump the database, if dbName is empty, then dump all databases.
Dump(ctx context.Context, database string, out io.Writer, schemaOnly bool) error
// Restore the database from sc.
Restore(ctx context.Context, sc *bufio.Scanner) error
}
Driver is the interface for database driver.
func Open ¶
func Open(ctx context.Context, dbType Type, driverConfig DriverConfig, connectionConfig ConnectionConfig, connCtx ConnectionContext) (Driver, error)
Open opens a database specified by its database driver type and connection config
type DriverConfig ¶
DriverConfig is the driver configuration.
type Index ¶
type Index struct {
Name string
// This could refer to a column or an expression
Expression string
Position int
// Type isn't supported for SQLite.
Type string
Unique bool
// Visible isn't supported for Postgres, SQLite.
Visible bool
// Comment isn't supported for SQLite.
Comment string
}
Index is the database index.
type MigrationHistory ¶
type MigrationHistory struct {
ID int
Creator string
CreatedTs int64
Updater string
UpdatedTs int64
ReleaseVersion string
Namespace string
Sequence int
Source MigrationSource
Type MigrationType
Status MigrationStatus
Version string
Description string
Statement string
Schema string
SchemaPrev string
ExecutionDurationNs int64
IssueID string
Payload string
}
MigrationHistory is the API message for migration history.
type MigrationHistoryFind ¶
type MigrationHistoryFind struct {
ID *int
Database *string
Source *MigrationSource
Version *string
// If specified, then it will only fetch "Limit" most recent migration histories
Limit *int
}
MigrationHistoryFind is the API message for finding migration histories.
type MigrationInfo ¶
type MigrationInfo struct {
ReleaseVersion string
Version string
Namespace string
Database string
Environment string
Source MigrationSource
Type MigrationType
Status MigrationStatus
Description string
Creator string
IssueID string
Payload string
CreateDatabase bool
}
MigrationInfo is the API message for migration info.
func ParseMigrationInfo ¶
func ParseMigrationInfo(filePath string, filePathTemplate string) (*MigrationInfo, error)
ParseMigrationInfo matches filePath against filePathTemplate If filePath matches, then it will derive MigrationInfo from the filePath. Both filePath and filePathTemplate are the full file path (including the base directory) of the repository.
type MigrationInfoPayload ¶
MigrationInfoPayload is the API message for migration info payload.
type MigrationSource ¶
type MigrationSource string
MigrationSource is the migration engine.
const ( // UI is the migration source type for UI. UI MigrationSource = "UI" // VCS is the migration source type for VCS. VCS MigrationSource = "VCS" // LIBRARY is the migration source type for LIBRARY. LIBRARY MigrationSource = "LIBRARY" )
func (MigrationSource) String ¶
func (e MigrationSource) String() string
type MigrationStatus ¶
type MigrationStatus string
MigrationStatus is the status of migration.
const ( // Pending is the migration status for PENDING. Pending MigrationStatus = "PENDING" // Done is the migration status for DONE. Done MigrationStatus = "DONE" // Failed is the migration status for FAILED. Failed MigrationStatus = "FAILED" )
func (MigrationStatus) String ¶
func (e MigrationStatus) String() string
type MigrationType ¶
type MigrationType string
MigrationType is the type of a migration.
const ( // Baseline is the migration type for BASELINE. // Used for establishing schema baseline, this is used when // 1. Onboard the database into Bytebase since Bytebase needs to know the current database schema. // 2. Had schema drift and need to re-establish the baseline. Baseline MigrationType = "BASELINE" // Migrate is the migration type for MIGRATE. // Used for DDL change. Migrate MigrationType = "MIGRATE" // Branch is the migration type for BRANCH. // Used when restoring from a backup (the restored database branched from the original backup). Branch MigrationType = "BRANCH" // Data is the migration type for DATA. // Used for DML change. Data MigrationType = "DATA" )
func (MigrationType) String ¶
func (e MigrationType) String() string
type Schema ¶
type Schema struct {
Name string
// CharacterSet isn't supported for ClickHouse, Snowflake.
CharacterSet string
// Collation isn't supported for ClickHouse, Snowflake.
Collation string
UserList []User
TableList []Table
ViewList []View
}
Schema is the database schema.
type Table ¶
type Table struct {
Name string
// CreatedTs isn't supported for ClickHouse, SQLite.
CreatedTs int64
// UpdatedTs isn't supported for SQLite.
UpdatedTs int64
Type string
// Engine isn't supported for Postgres, Snowflake, SQLite.
Engine string
// Collation isn't supported for Postgres, ClickHouse, Snowflake, SQLite.
Collation string
RowCount int64
// DataSize isn't supported for SQLite.
DataSize int64
// IndexSize isn't supported for ClickHouse, Snowflake, SQLite.
IndexSize int64
// DataFree isn't supported for Postgres, ClickHouse, Snowflake, SQLite.
DataFree int64
// CreateOptions isn't supported for Postgres, ClickHouse, Snowflake, SQLite.
CreateOptions string
// Comment isn't supported for SQLite.
Comment string
ColumnList []Column
// IndexList isn't supported for ClickHouse, Snowflake.
IndexList []Index
}
Table is the database table.
type Type ¶
type Type string
Type is the type of a database.
const ( // ClickHouse is the database type for CLICKHOUSE. ClickHouse Type = "CLICKHOUSE" // MySQL is the database type for MYSQL. MySQL Type = "MYSQL" // Postgres is the database type for POSTGRES. Postgres Type = "POSTGRES" // Snowflake is the database type for SNOWFLAKE. Snowflake Type = "SNOWFLAKE" // SQLite is the database type for SQLite. SQLite Type = "SQLITE" // TiDB is the database type for TiDB. TiDB Type = "TIDB" )