From b2b647f9cac81663e374e4e11748b1184df864e3 Mon Sep 17 00:00:00 2001 From: datbeohbbh Date: Fri, 22 Sep 2023 14:25:24 +0700 Subject: [PATCH] (refactor) add `TEST_YDB_CONNECTION_STRING` (refactor) fix return in `toYQLDataType` (refactor) fix returns in `yqlToSQLType` --- .gitea/workflows/test-ydb.yml | 7 +- Makefile | 11 +--- README.md | 2 +- dialects/ydb.go | 118 ++++++++++++---------------------- 4 files changed, 44 insertions(+), 94 deletions(-) diff --git a/.gitea/workflows/test-ydb.yml b/.gitea/workflows/test-ydb.yml index f69daae4..3858ef78 100644 --- a/.gitea/workflows/test-ydb.yml +++ b/.gitea/workflows/test-ydb.yml @@ -37,10 +37,8 @@ jobs: with: go-version: 1.20 - uses: actions/checkout@v3 - #- name: test ydb (secure connection) - # run: TEST_YDB_SCHEME=grpcs TEST_YDB_HOST=ydb:2135 TEST_YDB_DBNAME=local make test-ydb - name: test ydb (insecure connection) - run: TEST_YDB_SCHEME=grpc TEST_YDB_HOST=ydb:2136 TEST_YDB_DBNAME=local make test-ydb + run: make test-ydb services: ydb: @@ -49,13 +47,10 @@ jobs: - 2135:2135 - 2136:2136 - 8765:8765 - #volumes: - # - /tmp/ydb_certs:/ydb_certs env: YDB_LOCAL_SURVIVE_RESTART: true YDB_USE_IN_MEMORY_PDISKS: true env: - #YDB_SSL_ROOT_CERTIFICATES_FILE: /tmp/ydb_certs/ca.pem YDB_SESSIONS_SHUTDOWN_URLS: http://ydb:8765/actors/kqp_proxy?force_shutdown=all HIDE_APPLICATION_OUTPUT: 1 \ No newline at end of file diff --git a/Makefile b/Makefile index bbb86146..6f981c58 100644 --- a/Makefile +++ b/Makefile @@ -47,14 +47,7 @@ TEST_DAMENG_HOST ?= dameng:5236 TEST_DAMENG_USERNAME ?= SYSDBA TEST_DAMENG_PASSWORD ?= SYSDBA -TEST_YDB_SCHEME ?= grpc -TEST_YDB_HOST ?= ydb:2136 -TEST_YDB_DBNAME ?= local -TEST_YDB_TABLE_PATH_PREFIX ?= /local/xorm/test -TEST_YDB_QUERY_BIND ?= table_path_prefix($(TEST_YDB_TABLE_PATH_PREFIX)),declare,numeric -TEST_YDB_FAKE_TX ?= scan,scheme,scripting -TEST_YDB_USERNAME ?= -TEST_YDB_PASSWORD ?= +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_CACHE_ENABLE ?= false TEST_QUOTE_POLICY ?= always @@ -290,7 +283,7 @@ test-dameng\#%: go-check .PHONY: test-ydb test-ydb: go-check $(GO) test $(INTEGRATION_PACKAGES)/ydbtest -v -race -db=ydb -cache=$(TEST_CACHE_ENABLE) \ - -conn_str="$(TEST_YDB_SCHEME)://$(TEST_YDB_HOST)/$(TEST_YDB_DBNAME)?go_query_bind=$(TEST_YDB_QUERY_BIND)&go_fake_tx=$(TEST_YDB_FAKE_TX)" \ + -conn_str="$(TEST_YDB_CONNECTION_STRING)" \ -quote=$(TEST_QUOTE_POLICY) -coverprofile=ydb.$(TEST_QUOTE_POLICY).$(TEST_CACHE_ENABLE).coverage.out -covermode=atomic -timeout=20m .PHONY: vet diff --git a/README.md b/README.md index 31fd6574..b49000ce 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Drivers for Go's sql package which currently support database/sql includes: - [github.com/sijms/go-ora](https://github.com/sijms/go-ora) (experiment) * [YDB](https://github.com/ydb-platform/ydb) - - [github.com/ydb-platform/ydb-go-sdk](https://github.com/ydb-platform/ydb-go-sdk) + - [github.com/ydb-platform/ydb-go-sdk](https://github.com/ydb-platform/ydb-go-sdk) (experiment) ## Installation diff --git a/dialects/ydb.go b/dialects/ydb.go index e9b99a1b..edea6dd9 100644 --- a/dialects/ydb.go +++ b/dialects/ydb.go @@ -289,128 +289,90 @@ const ( yql_List = "LIST" ) -func toYQLDataType(t string, defaultLength, defaultLength2 int64) (yqlType string) { +func toYQLDataType(t string, defaultLength, defaultLength2 int64) string { switch v := t; v { case schemas.Bool, schemas.Boolean: - yqlType = yql_Bool - return + return yql_Bool case schemas.TinyInt: - yqlType = yql_Int8 - return + return yql_Int8 case schemas.UnsignedTinyInt: - yqlType = yql_Uint8 - return + return yql_Uint8 case schemas.SmallInt: - yqlType = yql_Int16 - return + return yql_Int16 case schemas.UnsignedSmallInt: - yqlType = yql_Uint16 - return + return yql_Uint16 case schemas.MediumInt: - yqlType = yql_Int32 - return + return yql_Int32 case schemas.UnsignedMediumInt: - yqlType = yql_Uint32 - return + return yql_Uint32 case schemas.BigInt: - yqlType = yql_Int64 - return + return yql_Int64 case schemas.UnsignedBigInt: - yqlType = yql_Uint64 - return + return yql_Uint64 case schemas.Int, schemas.Integer: - yqlType = yql_Int32 - return + return yql_Int32 case schemas.UnsignedInt: - yqlType = yql_Uint32 - return + return yql_Uint32 case schemas.Float: - yqlType = yql_Float - return + return yql_Float case schemas.Double: - yqlType = yql_Double - return + return yql_Double case schemas.Blob: - yqlType = yql_String - return + return yql_String case schemas.Json: - yqlType = yql_Json - return + return yql_Json case schemas.Array: - yqlType = yql_List - return + return yql_List case schemas.Varchar, schemas.Text: - yqlType = yql_Utf8 - return + return yql_Utf8 case schemas.TimeStamp, schemas.DateTime: - yqlType = yql_Timestamp - return + return yql_Timestamp case schemas.Interval: - yqlType = yql_Interval - return + return yql_Interval default: - yqlType = yql_String + return yql_String } - return } -func yqlToSQLType(yqlType string) (sqlType schemas.SQLType) { +func yqlToSQLType(yqlType string) schemas.SQLType { switch yqlType { case yql_Bool: - sqlType = schemas.SQLType{Name: schemas.Bool, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.Bool, DefaultLength: 0, DefaultLength2: 0} case yql_Int8: - sqlType = schemas.SQLType{Name: schemas.TinyInt, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.TinyInt, DefaultLength: 0, DefaultLength2: 0} case yql_Uint8: - sqlType = schemas.SQLType{Name: schemas.UnsignedTinyInt, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.UnsignedTinyInt, DefaultLength: 0, DefaultLength2: 0} case yql_Int16: - sqlType = schemas.SQLType{Name: schemas.SmallInt, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.SmallInt, DefaultLength: 0, DefaultLength2: 0} case yql_Uint16: - sqlType = schemas.SQLType{Name: schemas.UnsignedSmallInt, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.UnsignedSmallInt, DefaultLength: 0, DefaultLength2: 0} case yql_Int32: - sqlType = schemas.SQLType{Name: schemas.MediumInt, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.MediumInt, DefaultLength: 0, DefaultLength2: 0} case yql_Uint32: - sqlType = schemas.SQLType{Name: schemas.UnsignedMediumInt, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.UnsignedMediumInt, DefaultLength: 0, DefaultLength2: 0} case yql_Int64: - sqlType = schemas.SQLType{Name: schemas.BigInt, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.BigInt, DefaultLength: 0, DefaultLength2: 0} case yql_Uint64: - sqlType = schemas.SQLType{Name: schemas.UnsignedBigInt, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.UnsignedBigInt, DefaultLength: 0, DefaultLength2: 0} case yql_Float: - sqlType = schemas.SQLType{Name: schemas.Float, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.Float, DefaultLength: 0, DefaultLength2: 0} case yql_Double: - sqlType = schemas.SQLType{Name: schemas.Double, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.Double, DefaultLength: 0, DefaultLength2: 0} case yql_String: - sqlType = schemas.SQLType{Name: schemas.Blob, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.Blob, DefaultLength: 0, DefaultLength2: 0} case yql_Json: - sqlType = schemas.SQLType{Name: schemas.Json, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.Json, DefaultLength: 0, DefaultLength2: 0} case yql_List: - sqlType = schemas.SQLType{Name: schemas.Array, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.Array, DefaultLength: 0, DefaultLength2: 0} case yql_Utf8: - sqlType = schemas.SQLType{Name: schemas.Varchar, DefaultLength: 255, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.Varchar, DefaultLength: 255, DefaultLength2: 0} case yql_Timestamp: - sqlType = schemas.SQLType{Name: schemas.TimeStamp, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.TimeStamp, DefaultLength: 0, DefaultLength2: 0} case yql_Interval: - sqlType = schemas.SQLType{Name: schemas.Interval, DefaultLength: 0, DefaultLength2: 0} - return + return schemas.SQLType{Name: schemas.Interval, DefaultLength: 0, DefaultLength2: 0} default: - sqlType = schemas.SQLType{Name: schemas.Blob, DefaultLength: 0, DefaultLength2: 0} + return schemas.SQLType{Name: schemas.Blob, DefaultLength: 0, DefaultLength2: 0} } - return } func removeOptional(s string) string {