Skip to content

Commit 7b766c9

Browse files
authored
1 parent dfc2b36 commit 7b766c9

File tree

10 files changed

+28
-4
lines changed

10 files changed

+28
-4
lines changed

ydb/core/kqp/ut/federated_query/generic_ut/kqp_generic_provider_ut.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ namespace NKikimr::NKqp {
125125
// step 3: ReadSplits
126126
std::vector<ui16> colData = {10, 20, 30, 40, 50};
127127
clientMock->ExpectReadSplits()
128+
.Filtering(NYql::NConnector::NApi::TReadSplitsRequest::FILTERING_OPTIONAL)
128129
.Split()
129130
.Description("some binary description")
130131
.Select()
@@ -221,6 +222,7 @@ namespace NKikimr::NKqp {
221222

222223
// step 3: ReadSplits
223224
clientMock->ExpectReadSplits()
225+
.Filtering(NYql::NConnector::NApi::TReadSplitsRequest::FILTERING_OPTIONAL)
224226
.Split()
225227
.Description("some binary description")
226228
.Select()
@@ -313,6 +315,7 @@ namespace NKikimr::NKqp {
313315

314316
// step 3: ReadSplits
315317
clientMock->ExpectReadSplits()
318+
.Filtering(NYql::NConnector::NApi::TReadSplitsRequest::FILTERING_OPTIONAL)
316319
.Split()
317320
.Description("some binary description")
318321
.Select()
@@ -418,6 +421,7 @@ namespace NKikimr::NKqp {
418421
std::vector<i32> filterColumnData = {42, 24};
419422
// clang-format off
420423
clientMock->ExpectReadSplits()
424+
.Filtering(NYql::NConnector::NApi::TReadSplitsRequest::FILTERING_OPTIONAL)
421425
.Split()
422426
.Description("some binary description")
423427
.Select(select)

ydb/library/yql/providers/generic/actors/ut/yql_generic_lookup_actor_ut.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ Y_UNIT_TEST_SUITE(GenericProviderLookupActor) {
128128

129129
connectorMock->ExpectReadSplits()
130130
.DataSourceInstance(dsi)
131+
.Filtering(NYql::NConnector::NApi::TReadSplitsRequest::FILTERING_MANDATORY)
131132
.Split()
132133
.Description("Actual split info is not important")
133134
.Done()

ydb/library/yql/providers/generic/actors/yql_generic_lookup_actor.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ namespace NYql::NDq {
155155
*readRequest.mutable_data_source_instance() = GetDataSourceInstanceWithToken();
156156
*readRequest.add_splits() = split;
157157
readRequest.Setformat(NConnector::NApi::TReadSplitsRequest_EFormat::TReadSplitsRequest_EFormat_ARROW_IPC_STREAMING);
158+
readRequest.set_filtering(NConnector::NApi::TReadSplitsRequest::FILTERING_MANDATORY);
158159
Connector->ReadSplits(readRequest).Subscribe([actorSystem = TActivationContext::ActorSystem(), selfId = SelfId()](const NConnector::TReadSplitsStreamIteratorAsyncResult& asyncResult) {
159160
YQL_CLOG(DEBUG, ProviderGeneric) << "ActorId=" << selfId << " Got ReadSplitsStreamIterator from Connector";
160161
auto result = ExtractFromConstFuture(asyncResult);

ydb/library/yql/providers/generic/actors/yql_generic_read_actor.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ namespace NYql::NDq {
199199
// Prepare request
200200
NConnector::NApi::TReadSplitsRequest request;
201201
request.set_format(NConnector::NApi::TReadSplitsRequest::ARROW_IPC_STREAMING);
202+
request.set_filtering(NConnector::NApi::TReadSplitsRequest::FILTERING_OPTIONAL);
202203
request.mutable_splits()->Reserve(Splits_.size());
203204

204205
for (const auto& split : Splits_) {

ydb/library/yql/providers/generic/connector/api/service/protos/connector.proto

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,22 @@ message TReadSplitsRequest {
235235
// If empty, the connector will return the split data from the very beginning.
236236
TContinuation continuation = 6;
237237

238+
enum EFiltering {
239+
FILTERING_UNSPECIFIED = 0;
240+
// If Connector cannot push down the predicate to the data source completely
241+
// (due to the lack of data type support, for example), it doesn't apply filter at all
242+
// and returns the full result of `SELECT columns FROM table` (no WHERE clause).
243+
// It's YDB's duty to filter the output on its own side.
244+
FILTERING_OPTIONAL = 1;
245+
// If Connector cannot push down the predicate to the data source completely,
246+
// it terminates the request and returns an error.
247+
FILTERING_MANDATORY = 2;
248+
}
249+
250+
// Determines various modes of server behavior in the context of predicate pushdown.
251+
// If not set, the default value is `FILTERING_OPTIONAL`.
252+
EFiltering filtering = 7;
253+
238254
reserved 5;
239255
}
240256

ydb/library/yql/providers/generic/connector/libcpp/ut_helpers/connector_client_mock.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,7 @@ namespace NYql::NConnector::NTest {
745745
DATA_SOURCE_INSTANCE_SUBBUILDER();
746746
SUBPROTO_BUILDER(Split, add_splits, NApi::TSplit, TSplitBuilder<TBuilder>);
747747
SETTER(Format, format);
748+
SETTER(Filtering, filtering);
748749

749750
TReadSplitsResultBuilder<TBuilder> Result() {
750751
return TReadSplitsResultBuilder<TBuilder>(ResponseResult_, this);

ydb/library/yql/providers/generic/connector/tests/datasource/clickhouse/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ services:
1212
- 8123
1313
fq-connector-go:
1414
container_name: fq-tests-ch-fq-connector-go
15-
image: ghcr.io/ydb-platform/fq-connector-go:v0.5.7-rc.1@sha256:f12475f346105d7bc630e7b85f51dce980bf9833f6ce0625c6f1191b1a1de923
15+
image: ghcr.io/ydb-platform/fq-connector-go:v0.5.11-rc.1@sha256:c018b2f1151fac8a86aaf79950ccdffaa72150785f303096d9a466f50eb62498
1616
ports:
1717
- 2130
1818
volumes:

ydb/library/yql/providers/generic/connector/tests/datasource/postgresql/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
services:
22
fq-connector-go:
33
container_name: fq-tests-pg-fq-connector-go
4-
image: ghcr.io/ydb-platform/fq-connector-go:v0.5.7-rc.1@sha256:f12475f346105d7bc630e7b85f51dce980bf9833f6ce0625c6f1191b1a1de923
4+
image: ghcr.io/ydb-platform/fq-connector-go:v0.5.11-rc.1@sha256:c018b2f1151fac8a86aaf79950ccdffaa72150785f303096d9a466f50eb62498
55
ports:
66
- 2130
77
volumes:

ydb/library/yql/providers/generic/connector/tests/datasource/ydb/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ services:
55
echo \"$$(dig fq-tests-ydb-ydb +short) fq-tests-ydb-ydb\" >> /etc/hosts; cat /etc/hosts;
66
/opt/ydb/bin/fq-connector-go server -c /opt/ydb/cfg/fq-connector-go.yaml"
77
container_name: fq-tests-ydb-fq-connector-go
8-
image: ghcr.io/ydb-platform/fq-connector-go:v0.5.7-rc.1@sha256:f12475f346105d7bc630e7b85f51dce980bf9833f6ce0625c6f1191b1a1de923
8+
image: ghcr.io/ydb-platform/fq-connector-go:v0.5.11-rc.1@sha256:c018b2f1151fac8a86aaf79950ccdffaa72150785f303096d9a466f50eb62498
99
ports:
1010
- 2130
1111
volumes:

ydb/library/yql/providers/generic/connector/tests/join/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ services:
1212
- 8123
1313
fq-connector-go:
1414
container_name: fq-tests-join-fq-connector-go
15-
image: ghcr.io/ydb-platform/fq-connector-go:v0.5.7-rc.1@sha256:f12475f346105d7bc630e7b85f51dce980bf9833f6ce0625c6f1191b1a1de923
15+
image: ghcr.io/ydb-platform/fq-connector-go:v0.5.11-rc.1@sha256:c018b2f1151fac8a86aaf79950ccdffaa72150785f303096d9a466f50eb62498
1616
ports:
1717
- 2130
1818
volumes:

0 commit comments

Comments
 (0)