Skip to content

Commit e43bf36

Browse files
authored
Merge 8c9654d into e3af273
2 parents e3af273 + 8c9654d commit e43bf36

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

ydb/library/yql/parser/pg_catalog/catalog.cpp

+10-5
Original file line numberDiff line numberDiff line change
@@ -2551,22 +2551,27 @@ TMaybe<TIssue> LookupCommonType(const TVector<ui32>& typeIds, const std::functio
25512551

25522552
const auto& catalog = TCatalog::Instance();
25532553

2554-
const TTypeDesc* commonType = &LookupType(typeIds[0]);
2555-
char commonCategory = commonType->Category;
2556-
size_t unknownsCnt = (commonType->TypeId == UnknownOid) ? 1 : 0;
2554+
size_t unknownsCnt = (typeIds[0] == UnknownOid || typeIds[0] == InvalidOid) ? 1 : 0;
25572555
castsNeeded = (unknownsCnt != 0);
2556+
const TTypeDesc* commonType = nullptr;
2557+
char commonCategory = 0;
2558+
if (typeIds[0] != InvalidOid) {
2559+
commonType = &LookupType(typeIds[0]);
2560+
commonCategory = commonType->Category;
2561+
}
2562+
25582563
size_t i = 1;
25592564
for (auto typeId = typeIds.cbegin() + 1; typeId != typeIds.cend(); ++typeId, ++i) {
25602565
if (*typeId == UnknownOid || *typeId == InvalidOid) {
25612566
++unknownsCnt;
25622567
castsNeeded = true;
25632568
continue;
25642569
}
2565-
if (Y_LIKELY(*typeId == commonType->TypeId)) {
2570+
if (commonType && *typeId == commonType->TypeId) {
25662571
continue;
25672572
}
25682573
const TTypeDesc& otherType = LookupType(*typeId);
2569-
if (commonType->TypeId == UnknownOid) {
2574+
if (!commonType || commonType->TypeId == UnknownOid) {
25702575
commonType = &otherType;
25712576
commonCategory = otherType.Category;
25722577
continue;

ydb/library/yql/parser/pg_wrapper/comp_factory.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,10 @@ class TPgTableContent : public TMutableComputationNode<TPgTableContent> {
298298
{"oid", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(desc.TypeId)); }},
299299
{"typname", [](const NPg::TTypeDesc& desc) { return PointerDatumToPod((Datum)(MakeFixedString(desc.Name, NAMEDATALEN))); }},
300300
{"typinput", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(desc.InFuncId)); }},
301-
{"typnamespace", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(1)); }},
301+
{"typnamespace", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(PG_CATALOG_NAMESPACE)); }},
302302
{"typtype", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(CharGetDatum(desc.TypType)); }},
303+
{"typrelid", [](const NPg::TTypeDesc&) { return ScalarDatumToPod(ObjectIdGetDatum(0)); }},
304+
{"typelem", [](const NPg::TTypeDesc& desc) { return ScalarDatumToPod(ObjectIdGetDatum(desc.ElementTypeId)); }},
303305
};
304306

305307
ApplyFillers(AllPgTypeFillers, Y_ARRAY_SIZE(AllPgTypeFillers), PgTypeFillers_);

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

+4
Original file line numberDiff line numberDiff line change
@@ -3489,6 +3489,10 @@ class TConverter : public IPGParseEvents {
34893489
}
34903490

34913491
auto name = names.back();
3492+
if (name == "shobj_description" || name == "obj_description") {
3493+
AddWarning(TIssuesIds::PG_COMPAT, name + " function forced to NULL");
3494+
return L(A("Null"));
3495+
}
34923496

34933497
const bool isAggregateFunc = NYql::NPg::HasAggregation(name, NYql::NPg::EAggKind::Normal);
34943498
const bool hasReturnSet = NYql::NPg::HasReturnSetProc(name);

0 commit comments

Comments
 (0)