diff options
author | Vitalii Gridnev <gridnevvvit@gmail.com> | 2022-05-19 00:33:08 +0300 |
---|---|---|
committer | Vitalii Gridnev <gridnevvvit@gmail.com> | 2022-05-19 00:33:08 +0300 |
commit | 8156a533bc4a5c6730b83d307fb7d0d9d9239b0c (patch) | |
tree | 2293aa930971377a915c4f924044942081acd7a2 | |
parent | 18cf9444cf63cc6eecbf8951a996c27ddfeaa610 (diff) | |
download | ydb-8156a533bc4a5c6730b83d307fb7d0d9d9239b0c.tar.gz |
check scan query results in tests where it's prossible
ref:8e126cb2786e156ac1778daeba5ecded2d78ec40
6 files changed, 31 insertions, 27 deletions
diff --git a/ydb/tests/functional/canonical/canondata/result.json b/ydb/tests/functional/canonical/canondata/result.json index d927ff0f908..1454198ef67 100644 --- a/ydb/tests/functional/canonical/canondata/result.json +++ b/ydb/tests/functional/canonical/canondata/result.json @@ -86,9 +86,6 @@ "test_sql.TestCanonicalFolder1.test_case[dynumber/select_params.sql-result_sets]": { "result_sets": { "uri": "file://test_sql.TestCanonicalFolder1.test_case_dynumber_select_params.sql-result_sets_/dynumber_select_params.sql.results" - }, - "result_sets_scan_query": { - "uri": "file://test_sql.TestCanonicalFolder1.test_case_dynumber_select_params.sql-result_sets_/dynumber_select_params.sql_scan_query.results" } }, "test_sql.TestCanonicalFolder1.test_case[explain.script-script]": { @@ -454,9 +451,6 @@ "test_sql.TestCanonicalFolder1.test_case[json/select_params.sql-result_sets]": { "result_sets": { "uri": "file://test_sql.TestCanonicalFolder1.test_case_json_select_params.sql-result_sets_/json_select_params.sql.results" - }, - "result_sets_scan_query": { - "uri": "file://test_sql.TestCanonicalFolder1.test_case_json_select_params.sql-result_sets_/json_select_params.sql_scan_query.results" } }, "test_sql.TestCanonicalFolder1.test_case[order_by/order_by_pk.sql-plan]": { diff --git a/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_dynumber_select_params.sql-result_sets_/dynumber_select_params.sql_scan_query.results b/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_dynumber_select_params.sql-result_sets_/dynumber_select_params.sql_scan_query.results deleted file mode 100644 index 0689f082b0b..00000000000 --- a/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_dynumber_select_params.sql-result_sets_/dynumber_select_params.sql_scan_query.results +++ /dev/null @@ -1,8 +0,0 @@ -[ - [ - { - "column0": "-.345678e3", - "column1": ".1e-4" - } - ] -]
\ No newline at end of file diff --git a/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_json_select_params.sql-result_sets_/json_select_params.sql_scan_query.results b/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_json_select_params.sql-result_sets_/json_select_params.sql_scan_query.results deleted file mode 100644 index 67393240d65..00000000000 --- a/ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_json_select_params.sql-result_sets_/json_select_params.sql_scan_query.results +++ /dev/null @@ -1,8 +0,0 @@ -[ - [ - { - "column0": "[1,2,3]", - "column1": "{\"name\":\"Tass\"}" - } - ] -]
\ No newline at end of file diff --git a/ydb/tests/functional/canonical/sql/compute/scheduler.sql b/ydb/tests/functional/canonical/sql/compute/scheduler.sql index a8ae22be02c..877839fcd94 100644 --- a/ydb/tests/functional/canonical/sql/compute/scheduler.sql +++ b/ydb/tests/functional/canonical/sql/compute/scheduler.sql @@ -2,5 +2,6 @@ SELECT id, SUM(nodes) AS nodes FROM ( SELECT id AS id, 0 AS nodes FROM schedulers UNION ALL SELECT scheduler AS id, COUNT(*) AS nodes FROM compute_nodes GROUP BY scheduler) -GROUP BY id; +GROUP BY id +ORDER BY id; diff --git a/ydb/tests/functional/canonical/test_sql.py b/ydb/tests/functional/canonical/test_sql.py index af5cdc2b9c7..d34c0ed63bb 100644 --- a/ydb/tests/functional/canonical/test_sql.py +++ b/ydb/tests/functional/canonical/test_sql.py @@ -10,6 +10,7 @@ from ydb.tests.library.common import yatest_common from ydb.tests.library.harness.kikimr_cluster import kikimr_cluster_factory from ydb.tests.library.harness.kikimr_config import KikimrConfigGenerator import ydb +import ydb.issues from ydb.public.api.protos import ydb_table_pb2 from google.protobuf import text_format import logging @@ -502,10 +503,24 @@ class BaseCanonicalTest(object): result_sets = self.serializable_execute(query, config.get('parameters', {})) canons['result_sets'] = self.canonical_results(query_name, self.pretty_json(result_sets)) - check_scan_query = config.get('check_scan_query', False) - if check_scan_query: + try: query_rows = self.scan_query(query, config.get('parameters', {})) - canons['result_sets_scan_query'] = self.canonical_results(query_name + '_scan_query', self.pretty_json(query_rows)) + assert self.pretty_json(query_rows) == self.pretty_json(result_sets), "Results mismatch: scan query result != data query." + except ydb.issues.Error as e: + incompatible_messages = [ + "Secondary index is not supported for ScanQuery", + "Scan query should have a single result set", + ] + + scan_query_incompatible = False + + for incompatible_message in incompatible_messages: + + if incompatible_message in str(e): + scan_query_incompatible = True + + if not scan_query_incompatible: + raise self.initialize_common(query_name, 'new_engine') new_engine_query = self.format_query(self.read_query_text(query_name), use_new_engine=True) diff --git a/ydb/tests/functional/suite_tests/test_base.py b/ydb/tests/functional/suite_tests/test_base.py index 0e6e9a35d99..2043fee35d9 100644 --- a/ydb/tests/functional/suite_tests/test_base.py +++ b/ydb/tests/functional/suite_tests/test_base.py @@ -422,7 +422,7 @@ class BaseSuiteRunner(object): return - actual_output, expected_output = safe_execute(get_actual_and_expected, statement) + actual_output, expected_output = safe_execute(get_actual_and_expected, statement, query_name) if len(actual_output) > 0: self.files[query_name] = write_canonical_response( @@ -502,6 +502,16 @@ class BaseSuiteRunner(object): def execute_query(self, statement_text): yql_text = format_yql_statement(statement_text, self.table_path_prefix) old_engine_result = self.pool.retry_operation_sync(lambda s: s.transaction().execute(yql_text, commit_tx=True)) + + if len(old_engine_result) == 1: + scan_query_result = self.execute_scan_query(yql_text) + for i in range(len(old_engine_result)): + self.execute_assert( + old_engine_result[i].rows, + scan_query_result, + "Results are not same", + ) + if self.check_new_engine_query_results and self.table_path_prefix not in self.ignored_results_matching: new_engine_yql_text = self.format_new_engine(format_yql_statement(statement_text, self.table_path_prefix_ne)) new_engine_result = self.pool.retry_operation_sync(lambda s: s.transaction().execute(new_engine_yql_text, commit_tx=True)) |