diff --git a/ydb/library/yql/parser/pg_catalog/catalog.cpp b/ydb/library/yql/parser/pg_catalog/catalog.cpp index 041bb7070489..459290aa46ec 100644 --- a/ydb/library/yql/parser/pg_catalog/catalog.cpp +++ b/ydb/library/yql/parser/pg_catalog/catalog.cpp @@ -2551,10 +2551,15 @@ TMaybe LookupCommonType(const TVector& typeIds, const std::functio const auto& catalog = TCatalog::Instance(); - const TTypeDesc* commonType = &LookupType(typeIds[0]); - char commonCategory = commonType->Category; - size_t unknownsCnt = (commonType->TypeId == UnknownOid) ? 1 : 0; + size_t unknownsCnt = (typeIds[0] == UnknownOid || typeIds[0] == InvalidOid) ? 1 : 0; castsNeeded = (unknownsCnt != 0); + const TTypeDesc* commonType = nullptr; + char commonCategory = 0; + if (typeIds[0] != InvalidOid) { + commonType = &LookupType(typeIds[0]); + commonCategory = commonType->Category; + } + size_t i = 1; for (auto typeId = typeIds.cbegin() + 1; typeId != typeIds.cend(); ++typeId, ++i) { if (*typeId == UnknownOid || *typeId == InvalidOid) { @@ -2562,11 +2567,11 @@ TMaybe LookupCommonType(const TVector& typeIds, const std::functio castsNeeded = true; continue; } - if (Y_LIKELY(*typeId == commonType->TypeId)) { + if (commonType && *typeId == commonType->TypeId) { continue; } const TTypeDesc& otherType = LookupType(*typeId); - if (commonType->TypeId == UnknownOid) { + if (!commonType || commonType->TypeId == UnknownOid) { commonType = &otherType; commonCategory = otherType.Category; continue; diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp index 64f2a91c7e29..2ca8da6286ed 100644 --- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp +++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp @@ -298,8 +298,10 @@ class TPgTableContent : public TMutableComputationNode { {"oid", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(desc.TypeId)); }}, {"typname", [](const NPg::TTypeDesc& desc) { return PointerDatumToPod((Datum)(MakeFixedString(desc.Name, NAMEDATALEN))); }}, {"typinput", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(desc.InFuncId)); }}, - {"typnamespace", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(1)); }}, + {"typnamespace", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(PG_CATALOG_NAMESPACE)); }}, {"typtype", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(CharGetDatum(desc.TypType)); }}, + {"typrelid", [](const NPg::TTypeDesc&) { return ScalarDatumToPod(ObjectIdGetDatum(0)); }}, + {"typelem", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(desc.ElementTypeId)); }}, }; ApplyFillers(AllPgTypeFillers, Y_ARRAY_SIZE(AllPgTypeFillers), PgTypeFillers_); diff --git a/ydb/library/yql/sql/pg/pg_sql.cpp b/ydb/library/yql/sql/pg/pg_sql.cpp index 2f5f2871a0c3..88ba8b9c03dd 100644 --- a/ydb/library/yql/sql/pg/pg_sql.cpp +++ b/ydb/library/yql/sql/pg/pg_sql.cpp @@ -3489,6 +3489,10 @@ class TConverter : public IPGParseEvents { } auto name = names.back(); + if (name == "shobj_description" || name == "obj_description") { + AddWarning(TIssuesIds::PG_COMPAT, name + " function forced to NULL"); + return L(A("Null")); + } const bool isAggregateFunc = NYql::NPg::HasAggregation(name, NYql::NPg::EAggKind::Normal); const bool hasReturnSet = NYql::NPg::HasReturnSetProc(name); diff --git a/ydb/library/yql/tests/sql/yt_native_file/part15/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part15/canondata/result.json index e5ce8f78135c..95aabde220dc 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part15/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part15/canondata/result.json @@ -2077,9 +2077,9 @@ ], "test.test[pg_catalog-pg_set_config_commit-default.txt-Results]": [ { - "checksum": "c5e95bb55bee121d984dcc8030c0d078", - "size": 81034, - "uri": "https://{canondata_backend}/1889210/12eb3d6135cc7c142c46c4cbdc538bcd42612711/resource.tar.gz#test.test_pg_catalog-pg_set_config_commit-default.txt-Results_/results.txt" + "checksum": "ab42d523f46bbb78b5e444f284263844", + "size": 81420, + "uri": "https://{canondata_backend}/1937027/6d104b7ff295cd850e83985304b58019e03b127c/resource.tar.gz#test.test_pg_catalog-pg_set_config_commit-default.txt-Results_/results.txt" } ], "test.test[pragma-yson_auto_convert--Debug]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part19/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part19/canondata/result.json index 2c002dcdd284..d14eec0334b4 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part19/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part19/canondata/result.json @@ -2141,9 +2141,9 @@ ], "test.test[pg_catalog-pg_type_syntax_pg-default.txt-Results]": [ { - "checksum": "8ddfa3db17f5dcc174f50a8a48e991b9", - "size": 40518, - "uri": "https://{canondata_backend}/1942671/21ee0e4e2b05b4a7ec7dc41bfc2f5222bf683757/resource.tar.gz#test.test_pg_catalog-pg_type_syntax_pg-default.txt-Results_/results.txt" + "checksum": "b0ed9f922a8c9c665672975ad872eed3", + "size": 40711, + "uri": "https://{canondata_backend}/1937027/e4c43dd0a3435b6e080492799b1e73594f48a97d/resource.tar.gz#test.test_pg_catalog-pg_type_syntax_pg-default.txt-Results_/results.txt" } ], "test.test[pg_catalog-pg_type_syntax_yql-default.txt-Debug]": [ diff --git a/ydb/library/yql/tests/sql/yt_native_file/part4/canondata/result.json b/ydb/library/yql/tests/sql/yt_native_file/part4/canondata/result.json index adab475bd9cf..3f409c37dd44 100644 --- a/ydb/library/yql/tests/sql/yt_native_file/part4/canondata/result.json +++ b/ydb/library/yql/tests/sql/yt_native_file/part4/canondata/result.json @@ -1820,9 +1820,9 @@ ], "test.test[pg_catalog-pg_set_config-default.txt-Results]": [ { - "checksum": "b536ee2489e572348ea35bda8c0ec0d4", - "size": 81034, - "uri": "https://{canondata_backend}/1031349/7b09580c71768591c522e0563c532a885c6a950b/resource.tar.gz#test.test_pg_catalog-pg_set_config-default.txt-Results_/results.txt" + "checksum": "34d9e7ccdc8bba742382ff43564d2a3f", + "size": 81420, + "uri": "https://{canondata_backend}/1923547/5c44f09f92b4654efde265edfb30dedf7811c9ed/resource.tar.gz#test.test_pg_catalog-pg_set_config-default.txt-Results_/results.txt" } ], "test.test[produce-reduce_all-default.txt-Debug]": [