sql

package
v0.26.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 28, 2020 License: MIT Imports: 12 Imported by: 0

README

Using the SQL schema tool

This package contains the tooling for temporal sql operations. The tooling itself is agnostic of the storage engine behind the sql interface. So, this same tool can be used against, say, OracleDB and MySQLDB

For localhost development

SQL_USER=$USERNAME SQL_PASSWORD=$PASSWD make install-schema-mysql

For production

Create the binaries

  • Run make
  • You should see an executable temporal-sql-tool
  • Temporal officially support MySQL and Postgres for SQL.
  • For other SQL database, you can add it easily as we do for MySQL/Postgres following our code in sql-extensions

Do one time database creation and schema setup for a new cluster

  • All command below are taking MySQL as example. For postgres, simply use with "--plugin postgres"
temporal-sql-tool --ep $SQL_HOST_ADDR -p $port create --plugin mysql --db temporal
temporal-sql-tool --ep $SQL_HOST_ADDR -p $port create --plugin mysql --db temporal_visibility
./temporal-sql-tool --ep $SQL_HOST_ADDR -p $port --plugin mysql --db temporal setup-schema -v 0.0 -- this sets up just the schema version tables with initial version of 0.0
./temporal-sql-tool --ep $SQL_HOST_ADDR -p $port --plugin mysql --db temporal update-schema -d ./schema/mysql/v57/temporal/versioned -- upgrades your schema to the latest version

./temporal-sql-tool --ep $SQL_HOST_ADDR -p $port --plugin mysql --db temporal_visibility setup-schema -v 0.0 -- this sets up just the schema version tables with initial version of 0.0 for visibility
./temporal-sql-tool --ep $SQL_HOST_ADDR -p $port --plugin mysql --db temporal_visibility update-schema -d ./schema/mysql/v57/visibility/versioned  -- upgrades your schema to the latest version for visibility

Update schema as part of a release

You can only upgrade to a new version after the initial setup done above.

./temporal-sql-tool --ep $SQL_HOST_ADDR -p $port --plugin mysql --db temporal update-schema -d ./schema/mysql/v57/temporal/versioned -v x.x -y -- executes a dryrun of upgrade to version x.x
./temporal-sql-tool --ep $SQL_HOST_ADDR -p $port --plugin mysql --db temporal update-schema -d ./schema/mysql/v57/temporal/versioned -v x.x    -- actually executes the upgrade to version x.x

./temporal-sql-tool --ep $SQL_HOST_ADDR -p $port --plugin mysql --db temporal_visibility update-schema -d ./schema/mysql/v57/temporal/versioned -v x.x -y -- executes a dryrun of upgrade to version x.x
./temporal-sql-tool --ep $SQL_HOST_ADDR -p $port --plugin mysql --db temporal_visibility update-schema -d ./schema/mysql/v57/temporal/versioned -v x.x    -- actually executes the upgrade to version x.x

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildCLIOptions added in v0.10.0

func BuildCLIOptions() *cli.App

BuildCLIOptions builds the options for cli

func CheckCompatibleVersion added in v0.10.0

func CheckCompatibleVersion(
	cfg config.SQL,
	expectedVersion string,
) error

CheckCompatibleVersion check the version compatibility

func RunTool

func RunTool(args []string) error

RunTool runs the temporal-sql-tool command line tool

func ValidateConnectConfig added in v0.10.0

func ValidateConnectConfig(cfg *config.SQL, isDryRun bool) error

ValidateConnectConfig validates params

func VerifyCompatibleVersion added in v0.10.0

func VerifyCompatibleVersion(
	cfg config.Persistence,
) error

VerifyCompatibleVersion ensures that the installed version of temporal and visibility is greater than or equal to the expected version.

Types

type Connection added in v0.10.0

type Connection struct {
	// contains filtered or unexported fields
}

Connection is the connection to database

func NewConnection added in v0.10.0

func NewConnection(cfg *config.SQL) (*Connection, error)

NewConnection creates a new connection to database

func (*Connection) Close added in v0.10.0

func (c *Connection) Close()

Close closes the sql client

func (*Connection) CreateDatabase added in v0.10.0

func (c *Connection) CreateDatabase(name string) error

CreateDatabase creates a database if it doesn't exist

func (*Connection) CreateSchemaVersionTables added in v0.10.0

func (c *Connection) CreateSchemaVersionTables() error

CreateSchemaVersionTables sets up the schema version tables

func (*Connection) DropAllTables added in v0.10.0

func (c *Connection) DropAllTables() error

DropAllTables drops all tables from this database

func (*Connection) DropDatabase added in v0.10.0

func (c *Connection) DropDatabase(name string) error

DropDatabase drops a database

func (*Connection) DropTable added in v0.10.0

func (c *Connection) DropTable(name string) error

DropTable drops a given table from the database

func (*Connection) Exec added in v0.10.0

func (c *Connection) Exec(stmt string, args ...interface{}) error

Exec executes a sql statement

func (*Connection) ListTables added in v0.10.0

func (c *Connection) ListTables() ([]string, error)

ListTables returns a list of tables in this database

func (*Connection) ReadSchemaVersion added in v0.10.0

func (c *Connection) ReadSchemaVersion() (string, error)

ReadSchemaVersion returns the current schema version for the keyspace

func (*Connection) UpdateSchemaVersion added in v0.10.0

func (c *Connection) UpdateSchemaVersion(newVersion string, minCompatibleVersion string) error

UpdateSchemaVersion updates the schema version for the keyspace

func (*Connection) WriteSchemaUpdateLog added in v0.10.0

func (c *Connection) WriteSchemaUpdateLog(oldVersion string, newVersion string, manifestMD5 string, desc string) error

WriteSchemaUpdateLog adds an entry to the schema update history table

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL