diff --git a/Makefile b/Makefile index 6f981c58..e9ce6279 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ TEST_DAMENG_HOST ?= dameng:5236 TEST_DAMENG_USERNAME ?= SYSDBA TEST_DAMENG_PASSWORD ?= SYSDBA -TEST_YDB_CONNECTION_STRING ?= grpc://ydb:2136/local?go_query_bind=table_path_prefix(/local/xorm/test),declare,numeric&go_fake_tx=scan,scheme,scripting +TEST_YDB_CONNECTION_STRING ?= grpc://ydb:2136/local?go_query_bind=table_path_prefix(/local),declare,numeric&go_fake_tx=scan,scheme,scripting TEST_CACHE_ENABLE ?= false TEST_QUOTE_POLICY ?= always diff --git a/dialects/ydb.go b/dialects/ydb.go index 28b3c67d..f0a33518 100644 --- a/dialects/ydb.go +++ b/dialects/ydb.go @@ -724,6 +724,8 @@ func (db *ydb) GetIndexes( return indexes, nil } +// !datbeohbbh! CreateTableSQL generate `CREATE TABLE` YQL. +// Method does not generate YQL for creating index. func (db *ydb) CreateTableSQL( ctx context.Context, _ core.Queryer, @@ -761,27 +763,7 @@ func (db *ydb) CreateTableSQL( } joinColumns := strings.Join(columnsList, ", ") - // build index - indexList := []string{} - for indexName, index := range table.Indexes { - name := quote.Quote(indexName) - onCols := make([]string, len(index.Cols)) - for i := 0; i < len(index.Cols); i++ { - onCols[i] = quote.Quote(index.Cols[i]) - } - indexList = append(indexList, - fmt.Sprintf( - "INDEX %s GLOBAL ON ( %s )", - name, strings.Join(onCols, ", "))) - } - joinIndexes := strings.Join(indexList, ", ") - - if joinIndexes != "" { - buf.WriteString(strings.Join([]string{joinColumns, joinIndexes, primaryKey}, ", ")) - } else { - buf.WriteString(strings.Join([]string{joinColumns, primaryKey}, ", ")) - } - + buf.WriteString(strings.Join([]string{joinColumns, primaryKey}, ", ")) buf.WriteString(" ) ") if db.tableParams != nil && len(db.tableParams) > 0 { diff --git a/engine.go b/engine.go index ca2e2e18..72063d60 100644 --- a/engine.go +++ b/engine.go @@ -552,10 +552,6 @@ func (engine *Engine) dumpTables(ctx context.Context, tables []*schemas.Table, w } for _, index := range dstTable.Indexes { - // !datbeohbbh! with YDB, if there are indexes in table, these indexes have already been created in CREATE TABLE script. - if dstDialect.URI().DBType == schemas.YDB { - continue - } _, err = io.WriteString(w, dstDialect.CreateIndexSQL(dstTable.Name, index)+";\n") if err != nil { return err diff --git a/sync.go b/sync.go index f5395b0d..ebdd96e8 100644 --- a/sync.go +++ b/sync.go @@ -109,11 +109,6 @@ func (session *Session) SyncWithOptions(opts SyncOptions, beans ...interface{}) return nil, err } - // !datbeohbbh! skip with YDB. All indexes are created when create table. - if engine.dialect.URI().DBType == schemas.YDB { - continue - } - if !opts.IgnoreConstrains { err = session.createUniques(bean) if err != nil { diff --git a/tests/ydbtest/helpers.go b/tests/ydbtest/helpers.go index 141c68db..47499f64 100644 --- a/tests/ydbtest/helpers.go +++ b/tests/ydbtest/helpers.go @@ -156,7 +156,7 @@ func PrepareScheme(bean ...interface{}) error { return err } - if err := engine.CreateTables(bean...); err != nil { + if err := engine.Sync(bean...); err != nil { return err } diff --git a/tests/ydbtest/session_schema_test.go b/tests/ydbtest/session_schema_test.go index ee2be444..658a66ca 100644 --- a/tests/ydbtest/session_schema_test.go +++ b/tests/ydbtest/session_schema_test.go @@ -19,7 +19,19 @@ func TestCreateTable(t *testing.T) { assert.NoError(t, session.DropTable(&Users{})) assert.NoError(t, session.CreateTable(&Users{})) - // assert.NoError(t, session.CreateTable(&Users{})) +} + +func TestCreateTableAndIndex(t *testing.T) { + engine, err := enginePool.GetScriptQueryEngine() + assert.NoError(t, err) + assert.NotNil(t, engine) + + session := engine.NewSession() + defer session.Close() + + assert.NoError(t, session.DropTable(&Users{})) + assert.NoError(t, session.CreateTable(&Users{})) + assert.NoError(t, session.CreateIndexes(&Users{})) } func TestIsTableEmpty(t *testing.T) {