Skip to content

Commit 2942896

Browse files
authored
Fixed import of pg extensions (#10114)
1 parent c25360f commit 2942896

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

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

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4042,13 +4042,20 @@ void ImportExtensions(const TString& exported, bool typesOnly, IExtensionLoader*
40424042
Y_ENSURE(proto.ParseFromString(exported));
40434043
for (ui32 i = 0; i < proto.ExtensionSize(); ++i) {
40444044
const auto& protoExt = proto.GetExtension(i);
4045-
TExtensionDesc ext;
4046-
ext.Name = protoExt.GetName();
4047-
ext.InstallName = protoExt.GetInstallName();
4048-
ext.TypesOnly = protoExt.GetTypesOnly();
4049-
ext.LibraryMD5 = protoExt.GetLibraryMD5();
4050-
ext.LibraryPath = protoExt.GetLibraryPath();
4051-
catalog.State->Extensions.push_back(ext);
4045+
TExtensionDesc e;
4046+
e.Name = protoExt.GetName();
4047+
e.InstallName = protoExt.GetInstallName();
4048+
e.TypesOnly = protoExt.GetTypesOnly();
4049+
e.LibraryMD5 = protoExt.GetLibraryMD5();
4050+
e.LibraryPath = protoExt.GetLibraryPath();
4051+
catalog.State->Extensions.push_back(e);
4052+
if (!catalog.State->ExtensionsByName.insert(std::make_pair(e.Name, i + 1)).second) {
4053+
throw yexception() << "Duplicated extension name: " << e.Name;
4054+
}
4055+
4056+
if (!catalog.State->ExtensionsByInstallName.insert(std::make_pair(e.InstallName, i + 1)).second) {
4057+
throw yexception() << "Duplicated extension install name: " << e.InstallName;
4058+
}
40524059
}
40534060

40544061
for (const auto& protoType : proto.GetType()) {

0 commit comments

Comments
 (0)