From 61ca5ecb890c14ffafb3b5e2aea2dd0fa3524ba7 Mon Sep 17 00:00:00 2001 From: Maxim Krasilnikov Date: Tue, 20 Aug 2024 21:02:52 +0300 Subject: [PATCH] Add starrocks from goose fork --- README.md | 6 +-- go.mod | 2 +- go.sum | 4 +- vendor/github.com/pressly/goose/v3/Makefile | 4 ++ vendor/github.com/pressly/goose/v3/README.md | 2 + .../pressly/goose/v3/database/dialect.go | 2 + vendor/github.com/pressly/goose/v3/db.go | 4 +- .../dialect/dialectquery/starrocks.go | 45 +++++++++++++++++++ .../goose/v3/internal/dialect/dialects.go | 1 + .../goose/v3/internal/dialect/store.go | 2 + vendor/modules.txt | 2 +- 11 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/starrocks.go diff --git a/README.md b/README.md index e50985a..78a3719 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ Aimed to add extra features and hide some limitations of existing golang migrati ## Supporting -PackageName | Version | Postgres | MySQL | Clickhouse | Vertica ------------ | ------- | ------------------- | -------- | ---------- | ---- -[goose](https://github.com/pressly/goose) | 3.21.1 ([patch](https://github.com/chapsuk/goose/commit/b77972a357125bf35a19ed10161c3b9070fc7993)) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: +PackageName | Version | Postgres | MySQL | Clickhouse | Vertica | Starrocks +----------- | ------- | ------------------- | -------- | ---------- | ---- | --- +[goose](https://github.com/pressly/goose) | 3.21.1 ([patch](https://github.com/chapsuk/goose/commit/aabc7719b7317715e8f43d224969fb4cb1f15b5a)) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: [migrate](https://github.com/golang-migrate/migrate) | 4.2.5 | :heavy_check_mark: | :heavy_check_mark: | | [impg](https://github.com/im-kulikov/migrate) | 0.1 | :heavy_check_mark: | | | diff --git a/go.mod b/go.mod index 5724ff3..420e0d1 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module miga go 1.23 -replace github.com/pressly/goose/v3 v3.21.1 => github.com/chapsuk/goose/v3 v3.0.0-20240820172103-c6251288bf9b +replace github.com/pressly/goose/v3 v3.21.1 => github.com/chapsuk/goose/v3 v3.0.0-20240820180124-aabc7719b731 require ( github.com/ClickHouse/clickhouse-go/v2 v2.27.1 diff --git a/go.sum b/go.sum index a3926f6..d19c02d 100644 --- a/go.sum +++ b/go.sum @@ -26,8 +26,8 @@ github.com/aws/aws-sdk-go v1.15.54/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZo github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/chapsuk/goose/v3 v3.0.0-20240820172103-c6251288bf9b h1:N3Cl2j+CTNh2lt+Hxf4MJXHHwa92pdkBojxv66Ix8TA= -github.com/chapsuk/goose/v3 v3.0.0-20240820172103-c6251288bf9b/go.mod h1:3cbFEcrkpSdwbzqv0g81mfughlLVY5dlvrIMyi8NBk8= +github.com/chapsuk/goose/v3 v3.0.0-20240820180124-aabc7719b731 h1:hsWTBSqgJkDGi+WDrC79vvNYX4y6tNPc3UYUP+/cqY0= +github.com/chapsuk/goose/v3 v3.0.0-20240820180124-aabc7719b731/go.mod h1:3cbFEcrkpSdwbzqv0g81mfughlLVY5dlvrIMyi8NBk8= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= diff --git a/vendor/github.com/pressly/goose/v3/Makefile b/vendor/github.com/pressly/goose/v3/Makefile index e68eff0..4d2211f 100644 --- a/vendor/github.com/pressly/goose/v3/Makefile +++ b/vendor/github.com/pressly/goose/v3/Makefile @@ -9,6 +9,7 @@ DB_MYSQL_PORT ?= 3307 DB_CLICKHOUSE_PORT ?= 9001 DB_YDB_PORT ?= 2136 DB_TURSO_PORT ?= 8080 +DB_STARROCKS_PORT ?= 9030 list-build-tags: @echo "Available build tags:" @@ -84,6 +85,9 @@ test-vertica: add-gowork test-ydb: add-gowork go test $(GO_TEST_FLAGS) ./internal/testing/integration -run='TestYDB' +test-starrocks: add-gowork + go test $(GO_TEST_FLAGS) ./internal/testing/integration -run='TestStarrocks' + test-integration: add-gowork go test $(GO_TEST_FLAGS) ./internal/testing/integration/... diff --git a/vendor/github.com/pressly/goose/v3/README.md b/vendor/github.com/pressly/goose/v3/README.md index ef281fb..70a1aff 100644 --- a/vendor/github.com/pressly/goose/v3/README.md +++ b/vendor/github.com/pressly/goose/v3/README.md @@ -81,6 +81,7 @@ Drivers: clickhouse vertica ydb + starrocks Examples: goose sqlite3 ./foo.db status @@ -97,6 +98,7 @@ Examples: goose clickhouse "tcp://127.0.0.1:9000" status goose vertica "vertica://user:password@localhost:5433/dbname?connection_load_balance=1" status goose ydb "grpcs://localhost:2135/local?go_query_mode=scripting&go_fake_tx=scripting&go_query_bind=declare,numeric" status + goose starrocks "user:password@/dbname?parseTime=true&interpolateParams=true" status GOOSE_DRIVER=sqlite3 GOOSE_DBSTRING=./foo.db goose status GOOSE_DRIVER=sqlite3 GOOSE_DBSTRING=./foo.db goose create init sql diff --git a/vendor/github.com/pressly/goose/v3/database/dialect.go b/vendor/github.com/pressly/goose/v3/database/dialect.go index 2ac197d..ba2da5c 100644 --- a/vendor/github.com/pressly/goose/v3/database/dialect.go +++ b/vendor/github.com/pressly/goose/v3/database/dialect.go @@ -23,6 +23,7 @@ const ( DialectTurso Dialect = "turso" DialectVertica Dialect = "vertica" DialectYdB Dialect = "ydb" + DialectStarrocks Dialect = "starrocks" ) // NewStore returns a new [Store] implementation for the given dialect. @@ -44,6 +45,7 @@ func NewStore(dialect Dialect, tablename string) (Store, error) { DialectVertica: &dialectquery.Vertica{}, DialectYdB: &dialectquery.Ydb{}, DialectTurso: &dialectquery.Turso{}, + DialectStarrocks: &dialectquery.Starrocks{}, } querier, ok := lookup[dialect] if !ok { diff --git a/vendor/github.com/pressly/goose/v3/db.go b/vendor/github.com/pressly/goose/v3/db.go index 280f235..281945f 100644 --- a/vendor/github.com/pressly/goose/v3/db.go +++ b/vendor/github.com/pressly/goose/v3/db.go @@ -33,10 +33,12 @@ func OpenDBWithDriver(driver string, dbstring string) (*sql.DB, error) { driver = "sqlite" case "postgres", "redshift": driver = "pgx" + case "starrocks": + driver = "mysql" } switch driver { - case "postgres", "pgx", "sqlite3", "sqlite", "mysql", "sqlserver", "clickhouse", "vertica", "azuresql", "ydb", "libsql": + case "postgres", "pgx", "sqlite3", "sqlite", "mysql", "sqlserver", "clickhouse", "vertica", "azuresql", "ydb", "libsql", "starrocks": return sql.Open(driver, dbstring) case "clickhouse-replicated": db, err := sql.Open("clickhouse", dbstring) diff --git a/vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/starrocks.go b/vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/starrocks.go new file mode 100644 index 0000000..66e0fc9 --- /dev/null +++ b/vendor/github.com/pressly/goose/v3/internal/dialect/dialectquery/starrocks.go @@ -0,0 +1,45 @@ +package dialectquery + +import "fmt" + +type Starrocks struct{} + +var _ Querier = (*Starrocks)(nil) + +func (m *Starrocks) CreateTable(tableName string) string { + q := `CREATE TABLE IF NOT EXISTS %s ( + version_id bigint NOT NULL, + id bigint NOT NULL AUTO_INCREMENT, + is_applied boolean NOT NULL, + tstamp datetime NULL default CURRENT_TIMESTAMP + ) + PRIMARY KEY (version_id,id) + DISTRIBUTED BY HASH (id) + ORDER BY (version_id)` + return fmt.Sprintf(q, tableName) +} + +func (m *Starrocks) InsertVersion(tableName string) string { + q := `INSERT INTO %s (version_id, is_applied) VALUES (?, ?)` + return fmt.Sprintf(q, tableName) +} + +func (m *Starrocks) DeleteVersion(tableName string) string { + q := `DELETE FROM %s WHERE version_id=?` + return fmt.Sprintf(q, tableName) +} + +func (m *Starrocks) GetMigrationByVersion(tableName string) string { + q := `SELECT tstamp, is_applied FROM %s WHERE version_id=? ORDER BY tstamp DESC LIMIT 1` + return fmt.Sprintf(q, tableName) +} + +func (m *Starrocks) ListMigrations(tableName string) string { + q := `SELECT version_id, is_applied from %s ORDER BY version_id DESC` + return fmt.Sprintf(q, tableName) +} + +func (m *Starrocks) GetLatestVersion(tableName string) string { + q := `SELECT MAX(version_id) FROM %s` + return fmt.Sprintf(q, tableName) +} diff --git a/vendor/github.com/pressly/goose/v3/internal/dialect/dialects.go b/vendor/github.com/pressly/goose/v3/internal/dialect/dialects.go index 34e4e9b..ff60af7 100644 --- a/vendor/github.com/pressly/goose/v3/internal/dialect/dialects.go +++ b/vendor/github.com/pressly/goose/v3/internal/dialect/dialects.go @@ -15,4 +15,5 @@ const ( Vertica Dialect = "vertica" Ydb Dialect = "ydb" Turso Dialect = "turso" + Starrocks Dialect = "starrocks" ) diff --git a/vendor/github.com/pressly/goose/v3/internal/dialect/store.go b/vendor/github.com/pressly/goose/v3/internal/dialect/store.go index 6f9edaf..cac7b24 100644 --- a/vendor/github.com/pressly/goose/v3/internal/dialect/store.go +++ b/vendor/github.com/pressly/goose/v3/internal/dialect/store.go @@ -71,6 +71,8 @@ func NewStore(d Dialect) (Store, error) { querier = &dialectquery.Ydb{} case Turso: querier = &dialectquery.Turso{} + case Starrocks: + querier = &dialectquery.Starrocks{} default: return nil, fmt.Errorf("unknown querier dialect: %v", d) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 3e05fda..00ecbac 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -149,7 +149,7 @@ github.com/pierrec/lz4/v4/internal/xxh32 # github.com/pkg/errors v0.9.1 ## explicit github.com/pkg/errors -# github.com/pressly/goose/v3 v3.21.1 => github.com/chapsuk/goose/v3 v3.0.0-20240820172103-c6251288bf9b +# github.com/pressly/goose/v3 v3.21.1 => github.com/chapsuk/goose/v3 v3.0.0-20240820180124-aabc7719b731 ## explicit; go 1.21 github.com/pressly/goose/v3 github.com/pressly/goose/v3/database