(refactor) add `TEST_YDB_CONNECTION_STRING`

(refactor) fix return in `toYQLDataType`

(refactor) fix returns in `yqlToSQLType`
This commit is contained in:
datbeohbbh 2023-09-22 14:25:24 +07:00
parent 706471070e
commit b2b647f9ca
4 changed files with 44 additions and 94 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 {