Skip to content

Commit 29b2945

Browse files
authored
Keep Issue fields after censorship (#714)
* Keep Issue fields after censorship * Tests
1 parent 46ac4ea commit 29b2945

File tree

4 files changed

+40
-4
lines changed

4 files changed

+40
-4
lines changed

ydb/core/fq/libs/common/util.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ class TIssueDatabaseRemover {
5050

5151
TIntrusivePtr<NYql::TIssue> Run(const NYql::TIssue& issue) {
5252
auto msg = RemoveDatabaseFromStr(issue.GetMessage(), DatabasePath);
53-
auto newIssue = MakeIntrusive<NYql::TIssue>(msg);
53+
auto newIssue = MakeIntrusive<NYql::TIssue>(issue.Position, issue.EndPosition, msg);
54+
newIssue->SetCode(issue.GetCode(), issue.GetSeverity());
5455
for (auto issue : issue.GetSubIssues()) {
5556
newIssue->AddSubIssue(Run(*issue));
5657
}

ydb/tests/fq/s3/conftest.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from ydb.tests.tools.fq_runner.kikimr_utils import YQv2Extension
1616
from ydb.tests.tools.fq_runner.kikimr_utils import ComputeExtension
1717
from ydb.tests.tools.fq_runner.kikimr_utils import StatsModeExtension
18+
from ydb.tests.tools.fq_runner.kikimr_utils import BindingsModeExtension
1819
from ydb.tests.tools.fq_runner.kikimr_utils import start_kikimr
1920
from ydb.tests.fq.s3.s3_helpers import S3
2021
from library.recipes import common as recipes_common
@@ -67,14 +68,20 @@ def stats_mode():
6768

6869

6970
@pytest.fixture
70-
def kikimr(request: pytest.FixtureRequest, s3: S3, yq_version: str, stats_mode: str):
71+
def bindings_mode():
72+
return ''
73+
74+
75+
@pytest.fixture
76+
def kikimr(request: pytest.FixtureRequest, s3: S3, yq_version: str, stats_mode: str, bindings_mode: str):
7177
kikimr_extensions = [AddInflightExtension(),
7278
AddDataInflightExtension(),
7379
AddFormatSizeLimitExtension(),
7480
DefaultConfigExtension(s3.s3_url),
7581
YQv2Extension(yq_version),
7682
ComputeExtension(),
77-
StatsModeExtension(stats_mode)]
83+
StatsModeExtension(stats_mode),
84+
BindingsModeExtension(bindings_mode, yq_version)]
7885
with start_kikimr(request, kikimr_extensions) as kikimr:
7986
yield kikimr
8087

ydb/tests/fq/s3/test_bindings.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,8 @@ def test_name_uniqueness_constraint(self, client: FederatedQueryClient):
371371

372372
@yq_all
373373
@pytest.mark.parametrize("client", [{"folder_id": "my_folder"}], indirect=True)
374-
def test_s3_insert(self, kikimr, s3, client):
374+
@pytest.mark.parametrize("bindings_mode", ["BM_DROP_WITH_WARNING"])
375+
def test_s3_insert(self, kikimr, s3, client, bindings_mode, yq_version):
375376

376377
resource = boto3.resource(
377378
"s3",
@@ -401,13 +402,21 @@ def test_s3_insert(self, kikimr, s3, client):
401402

402403
query_id = client.create_query("simple", sql, type=fq.QueryContent.QueryType.ANALYTICS).result.query_id
403404
client.wait_query_status(query_id, fq.QueryMeta.COMPLETED)
405+
if yq_version == "v2":
406+
issues = str(client.describe_query(query_id).result.query.issue)
407+
assert "message: \"Please remove \\\'bindings.\\\' from your query, the support for this syntax will be dropped soon" in issues
408+
assert "severity: 2" in issues
404409

405410
sql = R'''
406411
select foo, bar from bindings.`s3binding`;
407412
'''
408413

409414
query_id = client.create_query("simple", sql, type=fq.QueryContent.QueryType.ANALYTICS).result.query_id
410415
client.wait_query_status(query_id, fq.QueryMeta.COMPLETED)
416+
if yq_version == "v2":
417+
issues = str(client.describe_query(query_id).result.query.issue)
418+
assert "message: \"Please remove \\\'bindings.\\\' from your query, the support for this syntax will be dropped soon" in issues
419+
assert "severity: 2" in issues
411420

412421
data = client.get_result_data(query_id)
413422
result_set = data.result.result_set

ydb/tests/tools/fq_runner/kikimr_utils.py

+19
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,25 @@ def apply_to_kikimr(self, request, kikimr):
224224
kikimr.control_plane.fq_config['control_plane_storage']['dump_raw_statistics'] = True
225225

226226

227+
class BindingsModeExtension(ExtensionPoint):
228+
229+
def __init__(self, bindings_mode, yq_version):
230+
YQv2Extension.__init__.__annotations__ = {
231+
'bindings_mode': str,
232+
'yq_version': str,
233+
'return': None
234+
}
235+
super().__init__()
236+
self.bindings_mode = bindings_mode
237+
self.yq_version = yq_version
238+
239+
def is_applicable(self, request):
240+
return self.yq_version == 'v2' and self.bindings_mode != ''
241+
242+
def apply_to_kikimr(self, request, kikimr):
243+
kikimr.compute_plane.config_generator.yaml_config["table_service_config"]["bindings_mode"] = self.bindings_mode
244+
245+
227246
@contextmanager
228247
def start_kikimr(request, kikimr_extensions):
229248
start_kikimr.__annotations__ = {

0 commit comments

Comments
 (0)