#include "PgProcContainer.h" #include "Pgsql_Connection.h" #include "Pgsql_Col.h" #include "PgDatabaseCatalog.h" #include #include std::string PgProcContainer::getLoadQuery() const { std::string column_list = "oid,proname,pronamespace,proowner,prolang,procost,prorows," "provariadic,protransform,proisagg,proiswindow,prosecdef,proleakproof," "proisstrict,proretset,provolatile,pronargs,pronargdefaults,prorettype," "proargtypes,proallargtypes,proargmodes,proargnames,proargdefaults," "prosrc,probin,proconfig,proacl"; if (minimumVersion(90500)) { column_list += ",protrftypes"; } if (minimumVersion(90600)) { column_list += ",proparallel"; } return "SELECT " + column_list + " FROM pg_proc"; } PgProc PgProcContainer::loadElem(const Pgsql::Row &row) { Pgsql::Col col(row); PgProc v(m_catalog); Oid namespace_oid; col >> v.oid >> v.name >> namespace_oid >> v.owner >> v.lang >> v.cost >> v.rows >> v.variadic >> v.transform >> v.isagg >> v.iswindow >> v.secdef >> v.leakproof >> v.isstrict >> v.retset >> v.provolatile >> v.nargs >> v.nargdefaults >> v.rettype; col.getAsVector(std::back_inserter(v.argtypes)); col >> v.allargtypes >> v.argmodes >> v.argnames >> v.argdefaults; col >> v.src; col >> v.bin >> v.config >> v.acl; v.setSchemaOid(namespace_oid); if (minimumVersion(90500)) { col >> v.trftypes; } if (minimumVersion(90600)) { col >> v.parallel; } return v; }