aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitalii Gridnev <gridnevvvit@gmail.com>2022-05-19 00:33:08 +0300
committerVitalii Gridnev <gridnevvvit@gmail.com>2022-05-19 00:33:08 +0300
commit8156a533bc4a5c6730b83d307fb7d0d9d9239b0c (patch)
tree2293aa930971377a915c4f924044942081acd7a2
parent18cf9444cf63cc6eecbf8951a996c27ddfeaa610 (diff)
downloadydb-8156a533bc4a5c6730b83d307fb7d0d9d9239b0c.tar.gz
check scan query results in tests where it's prossible
ref:8e126cb2786e156ac1778daeba5ecded2d78ec40
-rw-r--r--ydb/tests/functional/canonical/canondata/result.json6
-rw-r--r--ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_dynumber_select_params.sql-result_sets_/dynumber_select_params.sql_scan_query.results8
-rw-r--r--ydb/tests/functional/canonical/canondata/test_sql.TestCanonicalFolder1.test_case_json_select_params.sql-result_sets_/json_select_params.sql_scan_query.results8
-rw-r--r--ydb/tests/functional/canonical/sql/compute/scheduler.sql3
-rw-r--r--ydb/tests/functional/canonical/test_sql.py21
-rw-r--r--ydb/tests/functional/suite_tests/test_base.py12
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))