Skip to content

Commit bc17e65

Browse files
authored
Support of current_schema as function (#6886)
1 parent 6e01e83 commit bc17e65

File tree

6 files changed

+33
-25
lines changed

6 files changed

+33
-25
lines changed

ydb/library/yql/sql/pg/pg_sql.cpp

+15-8
Original file line numberDiff line numberDiff line change
@@ -3517,20 +3517,23 @@ class TConverter : public IPGParseEvents {
35173517

35183518
return L(A("PgConst"), QA(database ? *database : "postgres"), L(A("PgType"), QA("name")));
35193519
}
3520-
case SVFOP_CURRENT_SCHEMA: {
3521-
std::optional<TString> searchPath;
3522-
if (Settings.GUCSettings) {
3523-
searchPath = Settings.GUCSettings->Get("search_path");
3524-
}
3525-
3526-
return L(A("PgConst"), QA(searchPath ? *searchPath : "public"), L(A("PgType"), QA("name")));
3527-
}
3520+
case SVFOP_CURRENT_SCHEMA:
3521+
return GetCurrentSchema();
35283522
default:
35293523
AddError(TStringBuilder() << "Usupported SQLValueFunction: " << (int)value->op);
35303524
return nullptr;
35313525
}
35323526
}
35333527

3528+
TAstNode* GetCurrentSchema() {
3529+
std::optional<TString> searchPath;
3530+
if (Settings.GUCSettings) {
3531+
searchPath = Settings.GUCSettings->Get("search_path");
3532+
}
3533+
3534+
return L(A("PgConst"), QA(searchPath ? *searchPath : "public"), L(A("PgType"), QA("name")));
3535+
}
3536+
35343537
TAstNode* ParseBooleanTest(const BooleanTest* value, const TExprSettings& settings) {
35353538
AT_LOCATION(value);
35363539

@@ -3997,6 +4000,10 @@ class TConverter : public IPGParseEvents {
39974000
return L(A("Null"));
39984001
}
39994002

4003+
if (name == "current_schema") {
4004+
return GetCurrentSchema();
4005+
}
4006+
40004007
// for zabbix https://github.com/ydb-platform/ydb/issues/2904
40014008
if (name == "pg_try_advisory_lock" || name == "pg_try_advisory_lock_shared" || name == "pg_advisory_unlock" || name == "pg_try_advisory_xact_lock" || name == "pg_try_advisory_xact_lock_shared"){
40024009
AddWarning(TIssuesIds::PG_COMPAT, name + " function forced to return OK without waiting and without really lock/unlock");

ydb/library/yql/tests/sql/dq_file/part11/canondata/result.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -2258,9 +2258,9 @@
22582258
],
22592259
"test.test[pg_catalog-user-default.txt-Debug]": [
22602260
{
2261-
"checksum": "d5452a3a8b3315f78096106246b0cc4f",
2262-
"size": 734,
2263-
"uri": "https://{canondata_backend}/1031349/f9e5528e64f4bcdb4154fd10489bc2c93c9230cf/resource.tar.gz#test.test_pg_catalog-user-default.txt-Debug_/opt.yql_patched"
2261+
"checksum": "c0c4cb48beaa172880a589e79e2d9cab",
2262+
"size": 830,
2263+
"uri": "https://{canondata_backend}/1925821/2762f8f29ee80e9d69a3fae7ac21750c067803da/resource.tar.gz#test.test_pg_catalog-user-default.txt-Debug_/opt.yql_patched"
22642264
}
22652265
],
22662266
"test.test[pg_catalog-user-default.txt-Plan]": [

ydb/library/yql/tests/sql/hybrid_file/part10/canondata/result.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -2479,9 +2479,9 @@
24792479
],
24802480
"test.test[pg_catalog-user-default.txt-Debug]": [
24812481
{
2482-
"checksum": "ffdea96691e646c2bfa1b8d4e063f06d",
2483-
"size": 733,
2484-
"uri": "https://{canondata_backend}/1031349/45aada6c316544e03166fc51527848ab05146f50/resource.tar.gz#test.test_pg_catalog-user-default.txt-Debug_/opt.yql_patched"
2482+
"checksum": "4af800de2b7698d999d63cbeb508e93b",
2483+
"size": 829,
2484+
"uri": "https://{canondata_backend}/937458/8c856e93170e875aa0a26dc4a34de068016e4377/resource.tar.gz#test.test_pg_catalog-user-default.txt-Debug_/opt.yql_patched"
24852485
}
24862486
],
24872487
"test.test[pg_catalog-user-default.txt-Plan]": [

ydb/library/yql/tests/sql/sql2yql/canondata/result.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -15051,9 +15051,9 @@
1505115051
],
1505215052
"test_sql2yql.test[pg_catalog-user]": [
1505315053
{
15054-
"checksum": "b317c499b3d4e34107e1430e89576b26",
15055-
"size": 1450,
15056-
"uri": "https://{canondata_backend}/1925821/85af800a282697ba458d7b0567031a1eadd214a4/resource.tar.gz#test_sql2yql.test_pg_catalog-user_/sql.yql"
15054+
"checksum": "a7b59168ee545aec600996c65be07ab4",
15055+
"size": 1626,
15056+
"uri": "https://{canondata_backend}/1773845/dbc47337ac2531600b4ba49bf1235a6f07ff1422/resource.tar.gz#test_sql2yql.test_pg_catalog-user_/sql.yql"
1505715057
}
1505815058
],
1505915059
"test_sql2yql.test[pragma-classic_division]": [
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
--!syntax_pg
2-
select user, current_user, current_role, current_catalog, current_schema;
2+
select user, current_user, current_role, current_catalog, current_schema, current_schema();
33
set search_path to "pg_catalog";
4-
select user, current_user, current_role, current_catalog, current_schema;
4+
select user, current_user, current_role, current_catalog, current_schema, current_schema();
5+
56

ydb/library/yql/tests/sql/yt_native_file/part11/canondata/result.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -2188,9 +2188,9 @@
21882188
],
21892189
"test.test[pg_catalog-user-default.txt-Debug]": [
21902190
{
2191-
"checksum": "a3ac463405bd37eba6e90620a124fe96",
2192-
"size": 673,
2193-
"uri": "https://{canondata_backend}/1031349/e0d85027c4e39b38b460c0dbc0618a662f8a1dc3/resource.tar.gz#test.test_pg_catalog-user-default.txt-Debug_/opt.yql"
2191+
"checksum": "f3befc2c7ccd151ec1627935713e944f",
2192+
"size": 768,
2193+
"uri": "https://{canondata_backend}/1899731/8e3863ca69967a81b91196b65004961a7c52e2a5/resource.tar.gz#test.test_pg_catalog-user-default.txt-Debug_/opt.yql"
21942194
}
21952195
],
21962196
"test.test[pg_catalog-user-default.txt-Plan]": [
@@ -2202,9 +2202,9 @@
22022202
],
22032203
"test.test[pg_catalog-user-default.txt-Results]": [
22042204
{
2205-
"checksum": "231a565780cbd001099daeb95dc7ed4e",
2206-
"size": 4182,
2207-
"uri": "https://{canondata_backend}/1900335/b19e3a88f54bb49e1964c45fd96be88e34fd38d0/resource.tar.gz#test.test_pg_catalog-user-default.txt-Results_/results.txt"
2205+
"checksum": "fdb8e5ac8f1bed8efea16c30e07a0286",
2206+
"size": 4872,
2207+
"uri": "https://{canondata_backend}/1899731/8e3863ca69967a81b91196b65004961a7c52e2a5/resource.tar.gz#test.test_pg_catalog-user-default.txt-Results_/results.txt"
22082208
}
22092209
],
22102210
"test.test[produce-process_with_lambda-default.txt-Debug]": [

0 commit comments

Comments
 (0)