From 42b3ebcf720df08e0847b14e70a0b9f1b5c538a8 Mon Sep 17 00:00:00 2001 From: Vitaly Isaev Date: Sat, 12 Oct 2024 22:17:30 +0000 Subject: [PATCH] Linter complainings --- .../rdbms/mysql/table_metadata_query.go | 1 + .../rdbms/oracle/table_metadata_query.go | 1 + .../rdbms/postgresql/table_metadata_query.go | 1 + .../rdbms/utils/predicate_builder.go | 36 +++++++++++++++---- .../rdbms/utils/query_args_collector.go | 9 ++++- tests/infra/datasource/ydb/suite.go | 29 ++++++++------- tests/main_test.go | 10 +++--- tests/suite/suite.go | 2 +- 8 files changed, 62 insertions(+), 27 deletions(-) diff --git a/app/server/datasource/rdbms/mysql/table_metadata_query.go b/app/server/datasource/rdbms/mysql/table_metadata_query.go index 394f6dd4..a401b9de 100644 --- a/app/server/datasource/rdbms/mysql/table_metadata_query.go +++ b/app/server/datasource/rdbms/mysql/table_metadata_query.go @@ -13,6 +13,7 @@ func TableMetadataQuery(request *api_service_protos.TDescribeTableRequest) (stri WHERE table_name = ? AND table_schema = ?` var args rdbms_utils.QueryArgs + args.AddUntyped(request.Table) args.AddUntyped(request.GetDataSourceInstance().Database) diff --git a/app/server/datasource/rdbms/oracle/table_metadata_query.go b/app/server/datasource/rdbms/oracle/table_metadata_query.go index 305a601f..f27503f2 100644 --- a/app/server/datasource/rdbms/oracle/table_metadata_query.go +++ b/app/server/datasource/rdbms/oracle/table_metadata_query.go @@ -11,6 +11,7 @@ func TableMetadataQuery(request *api_service_protos.TDescribeTableRequest) (stri query := "SELECT column_name, data_type FROM user_tab_columns WHERE table_name = :1" var args rdbms_utils.QueryArgs + args.AddUntyped(request.Table) return query, &args diff --git a/app/server/datasource/rdbms/postgresql/table_metadata_query.go b/app/server/datasource/rdbms/postgresql/table_metadata_query.go index 29006826..7842cef0 100644 --- a/app/server/datasource/rdbms/postgresql/table_metadata_query.go +++ b/app/server/datasource/rdbms/postgresql/table_metadata_query.go @@ -12,6 +12,7 @@ func TableMetadataQuery( query := "SELECT column_name, data_type FROM information_schema.columns WHERE table_name = $1 AND table_schema = $2" var args rdbms_utils.QueryArgs + args.AddUntyped(request.Table) args.AddUntyped(schema) diff --git a/app/server/datasource/rdbms/utils/predicate_builder.go b/app/server/datasource/rdbms/utils/predicate_builder.go index 7f811232..42d4122c 100644 --- a/app/server/datasource/rdbms/utils/predicate_builder.go +++ b/app/server/datasource/rdbms/utils/predicate_builder.go @@ -42,7 +42,11 @@ func formatValue(formatter SQLFormatter, args *QueryArgs, value *Ydb.TypedValue) } } -func addTypedNull[ACCEPTOR_TYPE any](formatter SQLFormatter, args *QueryArgs, typeId Ydb.Type_PrimitiveTypeId) (string, *QueryArgs, error) { +func addTypedNull[ACCEPTOR_TYPE any]( + formatter SQLFormatter, + args *QueryArgs, + typeId Ydb.Type_PrimitiveTypeId, +) (string, *QueryArgs, error) { return formatter.GetPlaceholder(args.Count()), args.AddTyped(&Ydb.Type{Type: &Ydb.Type_TypeId{TypeId: typeId}}, (*ACCEPTOR_TYPE)(nil)), nil @@ -153,7 +157,11 @@ func formatExpression(formatter SQLFormatter, args *QueryArgs, expression *api_s } } -func formatComparison(formatter SQLFormatter, args *QueryArgs, comparison *api_service_protos.TPredicate_TComparison) (string, *QueryArgs, error) { +func formatComparison( + formatter SQLFormatter, + args *QueryArgs, + comparison *api_service_protos.TPredicate_TComparison, +) (string, *QueryArgs, error) { var operation string switch op := comparison.Operation; op { @@ -186,7 +194,10 @@ func formatComparison(formatter SQLFormatter, args *QueryArgs, comparison *api_s return fmt.Sprintf("(%s%s%s)", left, operation, right), args, nil } -func formatNegation(formatter SQLFormatter, args *QueryArgs, negation *api_service_protos.TPredicate_TNegation) (string, *QueryArgs, error) { +func formatNegation( + formatter SQLFormatter, + args *QueryArgs, + negation *api_service_protos.TPredicate_TNegation) (string, *QueryArgs, error) { pred, args, err := formatPredicate(formatter, args, negation.Operand, false) if err != nil { return "", args, fmt.Errorf("failed to format NOT statement: %w", err) @@ -296,7 +307,11 @@ func formatDisjunction( return sb.String(), args, nil } -func formatIsNull(formatter SQLFormatter, args *QueryArgs, isNull *api_service_protos.TPredicate_TIsNull) (string, *QueryArgs, error) { +func formatIsNull( + formatter SQLFormatter, + args *QueryArgs, + isNull *api_service_protos.TPredicate_TIsNull, +) (string, *QueryArgs, error) { statement, args, err := formatExpression(formatter, args, isNull.Value) if err != nil { return "", args, fmt.Errorf("failed to format IS NULL statement: %w", err) @@ -305,7 +320,11 @@ func formatIsNull(formatter SQLFormatter, args *QueryArgs, isNull *api_service_p return fmt.Sprintf("(%s IS NULL)", statement), args, nil } -func formatIsNotNull(formatter SQLFormatter, args *QueryArgs, isNotNull *api_service_protos.TPredicate_TIsNotNull) (string, *QueryArgs, error) { +func formatIsNotNull( + formatter SQLFormatter, + args *QueryArgs, + isNotNull *api_service_protos.TPredicate_TIsNotNull, +) (string, *QueryArgs, error) { statement, args, err := formatExpression(formatter, args, isNotNull.Value) if err != nil { return "", args, fmt.Errorf("failed to format IS NOT NULL statement: %w", err) @@ -314,7 +333,12 @@ func formatIsNotNull(formatter SQLFormatter, args *QueryArgs, isNotNull *api_ser return fmt.Sprintf("(%s IS NOT NULL)", statement), args, nil } -func formatPredicate(formatter SQLFormatter, args *QueryArgs, predicate *api_service_protos.TPredicate, topLevel bool) (string, *QueryArgs, error) { +func formatPredicate( + formatter SQLFormatter, + args *QueryArgs, + predicate *api_service_protos.TPredicate, + topLevel bool, +) (string, *QueryArgs, error) { switch p := predicate.Payload.(type) { case *api_service_protos.TPredicate_Negation: return formatNegation(formatter, args, p.Negation) diff --git a/app/server/datasource/rdbms/utils/query_args_collector.go b/app/server/datasource/rdbms/utils/query_args_collector.go index 11ca39a6..33f5af52 100644 --- a/app/server/datasource/rdbms/utils/query_args_collector.go +++ b/app/server/datasource/rdbms/utils/query_args_collector.go @@ -19,7 +19,13 @@ func (q *QueryArgs) AddTyped(ydbType *Ydb.Type, arg any) *QueryArgs { func (q *QueryArgs) AddUntyped(arg any) *QueryArgs { return q.AddTyped(nil, arg) } -func (q *QueryArgs) Count() int { return len(q.args) } +func (q *QueryArgs) Count() int { + if q == nil { + return 0 + } + + return len(q.args) +} func (q *QueryArgs) Values() []any { if q == nil { @@ -30,6 +36,7 @@ func (q *QueryArgs) Values() []any { for i, arg := range q.args { args[i] = arg.Value } + return args } diff --git a/tests/infra/datasource/ydb/suite.go b/tests/infra/datasource/ydb/suite.go index acb4445c..370319b1 100644 --- a/tests/infra/datasource/ydb/suite.go +++ b/tests/infra/datasource/ydb/suite.go @@ -5,6 +5,7 @@ import ( "github.com/ydb-platform/ydb-go-genproto/protos/Ydb" + api_common "github.com/ydb-platform/fq-connector-go/api/common" api_service_protos "github.com/ydb-platform/fq-connector-go/api/service/protos" "github.com/ydb-platform/fq-connector-go/common" "github.com/ydb-platform/fq-connector-go/tests/infra/datasource" @@ -83,19 +84,19 @@ func (s *Suite) TestPushdownComparisonEQ() { ) } -// func (s *Suite) TestPushdownComparisonEQNull() { -// s.ValidateTable( -// s.dataSource, -// tables["pushdown_comparison_EQ_NULL"], -// suite.WithPredicate(&api_service_protos.TPredicate{ -// Payload: tests_utils.MakePredicateComparisonColumn( -// "col_01_int", -// api_service_protos.TPredicate_TComparison_EQ, -// common.MakeTypedValue(common.MakeOptionalType(common.MakePrimitiveType(Ydb.Type_INT32)), nil), -// ), -// }), -// ) -// } +func (s *Suite) TestPushdownComparisonEQNull() { + s.ValidateTable( + s.dataSource, + tables["pushdown_comparison_EQ_NULL"], + suite.WithPredicate(&api_service_protos.TPredicate{ + Payload: tests_utils.MakePredicateComparisonColumn( + "col_01_int", + api_service_protos.TPredicate_TComparison_EQ, + common.MakeTypedValue(common.MakeOptionalType(common.MakePrimitiveType(Ydb.Type_INT32)), nil), + ), + }), + ) +} func (s *Suite) TestPushdownComparisonGE() { s.ValidateTable( @@ -298,7 +299,6 @@ func (s *Suite) TestPositiveStats() { suite.TestPositiveStats(s.Base, s.dataSource, tables["simple"]) } -/* func (s *Suite) TestMissingDataSource() { dsi := &api_common.TDataSourceInstance{ Kind: api_common.EDataSourceKind_YDB, @@ -330,7 +330,6 @@ func (s *Suite) TestInvalidPassword() { suite.TestInvalidPassword(s.Base, dsi, tables["simple"]) } } -*/ func NewSuite( baseSuite *suite.Base[int32, *array.Int32Builder], diff --git a/tests/main_test.go b/tests/main_test.go index 3d02bcda..4d0d4480 100644 --- a/tests/main_test.go +++ b/tests/main_test.go @@ -7,6 +7,12 @@ import ( "github.com/apache/arrow/go/v13/arrow/array" testify_suite "github.com/stretchr/testify/suite" + "github.com/ydb-platform/fq-connector-go/tests/infra/datasource/clickhouse" + "github.com/ydb-platform/fq-connector-go/tests/infra/datasource/greenplum" + "github.com/ydb-platform/fq-connector-go/tests/infra/datasource/ms_sql_server" + "github.com/ydb-platform/fq-connector-go/tests/infra/datasource/mysql" + "github.com/ydb-platform/fq-connector-go/tests/infra/datasource/oracle" + "github.com/ydb-platform/fq-connector-go/tests/infra/datasource/postgresql" "github.com/ydb-platform/fq-connector-go/tests/infra/datasource/ydb" "github.com/ydb-platform/fq-connector-go/tests/suite" ) @@ -25,7 +31,6 @@ func TestMain(m *testing.M) { m.Run() } -/* func TestClickHouse(t *testing.T) { testify_suite.Run(t, clickhouse.NewSuite(suite.NewBase[int32, *array.Int32Builder](t, state, "ClickHouse"))) } @@ -33,13 +38,11 @@ func TestClickHouse(t *testing.T) { func TestPostgreSQL(t *testing.T) { testify_suite.Run(t, postgresql.NewSuite(suite.NewBase[int32, *array.Int32Builder](t, state, "PostgreSQL"))) } -*/ func TestYDB(t *testing.T) { testify_suite.Run(t, ydb.NewSuite(suite.NewBase[int32, *array.Int32Builder](t, state, "YDB"))) } -/* func TestGreenplum(t *testing.T) { testify_suite.Run(t, greenplum.NewSuite(suite.NewBase[int32, *array.Int32Builder](t, state, "Greenplum"))) } @@ -55,4 +58,3 @@ func TestOracle(t *testing.T) { func TestMsSqlServer(t *testing.T) { testify_suite.Run(t, ms_sql_server.NewSuite(suite.NewBase[int32, *array.Int32Builder](t, state, "MS SQL Server"))) } -*/ diff --git a/tests/suite/suite.go b/tests/suite/suite.go index d73fc718..e4a09497 100644 --- a/tests/suite/suite.go +++ b/tests/suite/suite.go @@ -66,7 +66,7 @@ func (b *Base[_, _]) SetupSuite() { }, ), server.WithConnectionTimeouts("2s", "1s"), - server.WithYdbConnectorMode(config.TYdbConfig_MODE_QUERY_SERVICE_NATIVE), + server.WithYdbConnectorMode(config.TYdbConfig_MODE_TABLE_SERVICE_STDLIB_SCAN_QUERIES), ) b.Require().NoError(err) b.Connector.Start()