Skip to content

Commit b1edf9e

Browse files
authored
empty result set has been fixed (#7097)
1 parent 4d1e99e commit b1edf9e

File tree

4 files changed

+47
-7
lines changed

4 files changed

+47
-7
lines changed

ydb/core/grpc_services/ydb_over_fq/execute_data_query.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ class ExecuteDataQueryRPC
127127
)
128128

129129
void HandleResultSets(const TString& queryId, const TActorContext& ctx) {
130+
if (ResultSetSizes_.empty()) {
131+
SendReply(ctx);
132+
return;
133+
}
134+
130135
Become(&ExecuteDataQueryRPC::GatherResultSetsState);
131136
QueryId_ = queryId;
132137
MakeLocalCall(CreateResultSetRequest(queryId, 0, 0), ctx);

ydb/tests/fq/s3/conftest.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,10 @@ def __init__(self, tests_count_limit, error_string):
3535

3636
def on_test_start(self):
3737
self.number_tests += 1
38-
assert self.number_tests <= self.tests_count_limit, \
39-
f"{self.error_string} exceeded limit {self.number_tests} vs {self.tests_count_limit}, " \
38+
assert self.number_tests <= self.tests_count_limit, (
39+
f"{self.error_string} exceeded limit {self.number_tests} vs {self.tests_count_limit}, "
4040
"this may lead timeouts on CI, please split this file"
41+
)
4142

4243

4344
@pytest.fixture(scope="module")
@@ -104,15 +105,19 @@ def kikimr_starts_counter():
104105

105106

106107
@pytest.fixture(scope="module")
107-
def kikimr_yqv1(kikimr_params: pytest.FixtureRequest, s3: S3, kikimr_settings, mvp_external_ydb_endpoint, kikimr_starts_counter):
108+
def kikimr_yqv1(
109+
kikimr_params: pytest.FixtureRequest, s3: S3, kikimr_settings, mvp_external_ydb_endpoint, kikimr_starts_counter
110+
):
108111
kikimr_starts_counter.on_test_start()
109112
kikimr_extensions = get_kikimr_extensions(s3, YQV1_VERSION_NAME, kikimr_settings, mvp_external_ydb_endpoint)
110113
with start_kikimr(kikimr_params, kikimr_extensions) as kikimr:
111114
yield kikimr
112115

113116

114117
@pytest.fixture(scope="module")
115-
def kikimr_yqv2(kikimr_params: pytest.FixtureRequest, s3: S3, kikimr_settings, mvp_external_ydb_endpoint, kikimr_starts_counter):
118+
def kikimr_yqv2(
119+
kikimr_params: pytest.FixtureRequest, s3: S3, kikimr_settings, mvp_external_ydb_endpoint, kikimr_starts_counter
120+
):
116121
kikimr_starts_counter.on_test_start()
117122
kikimr_extensions = get_kikimr_extensions(s3, YQV2_VERSION_NAME, kikimr_settings, mvp_external_ydb_endpoint)
118123
with start_kikimr(kikimr_params, kikimr_extensions) as kikimr:

ydb/tests/fq/s3/test_format_setting.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -744,9 +744,11 @@ def test_date_time_simple_posix_big_file(
744744
connection_id=connection_response.result.connection_id,
745745
columns=[a, b],
746746
format_setting={
747-
"data.datetime.format"
748-
if format_name != "ISO" and format_name != "POSIX"
749-
else "data.datetime.format_name": format_name
747+
(
748+
"data.datetime.format"
749+
if format_name != "ISO" and format_name != "POSIX"
750+
else "data.datetime.format_name"
751+
): format_name
750752
},
751753
)
752754

ydb/tests/fq/s3/test_ydb_over_fq.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,3 +362,31 @@ def test_describe_table(self, kikimr, s3, client, unique_prefix):
362362
assert column.type == ydb.PrimitiveType.Int32
363363
else:
364364
assert False
365+
366+
@yq_all
367+
@pytest.mark.parametrize("client", [{"folder_id": "my_folder"}], indirect=True)
368+
def test_insert_data_query(self, kikimr, s3, client, unique_prefix, yq_version):
369+
kikimr.control_plane.wait_bootstrap()
370+
connection_id = client.create_storage_connection(unique_prefix + "fruitbucket", "fbucket").result.connection_id
371+
bind_name = unique_prefix + "fruits_bind"
372+
self.make_binding(
373+
client,
374+
bind_name,
375+
"/sub/",
376+
connection_id,
377+
[("Fruit", "STRING"), ("Price", "INT32"), ("Weight", "INT32")],
378+
)
379+
driver = self.make_yq_driver(kikimr.endpoint(), client.folder_id, "root@builtin")
380+
session = driver.table_client.session().create()
381+
with session.transaction() as tx:
382+
query = '''
383+
insert into {}{}
384+
select
385+
'Banana' as `Fruit`,
386+
3 as Price,
387+
100 as Weight
388+
'''.format(
389+
"bindings." if yq_version == "v1" else "", bind_name
390+
)
391+
result = tx.execute(query)
392+
assert len(result) == 0, str(result)

0 commit comments

Comments
 (0)