Lot of code for generating code. Working on unit tests.
This commit is contained in:
parent
da45929b12
commit
8f4845d4d2
42 changed files with 1089 additions and 267 deletions
|
|
@ -73,7 +73,7 @@ namespace Pgsql {
|
|||
*
|
||||
* The class takes ownership of data and will try to delete[] it.
|
||||
*/
|
||||
Param addText(const char *data, Oid oid=VARCHAROID);
|
||||
Param addText(const char *data, Oid oid=varchar_oid);
|
||||
};
|
||||
|
||||
} // end namespace Pgsql
|
||||
|
|
|
|||
|
|
@ -103,9 +103,9 @@ Value::operator double() const
|
|||
|
||||
bool Value::isString() const
|
||||
{
|
||||
return m_typ == CHAROID
|
||||
|| m_typ == VARCHAROID
|
||||
|| m_typ == TEXTOID
|
||||
return m_typ == char_oid
|
||||
|| m_typ == varchar_oid
|
||||
|| m_typ == text_oid
|
||||
;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,95 +5,95 @@
|
|||
|
||||
namespace Pgsql {
|
||||
|
||||
const Oid BOOLOID = 16;
|
||||
const Oid BYTEAOID = 17;
|
||||
const Oid CHAROID = 18;
|
||||
const Oid NAMEOID = 19;
|
||||
const Oid INT8OID = 20;
|
||||
const Oid INT2OID = 21;
|
||||
const Oid INT2VECTOROID = 22;
|
||||
const Oid INT4OID = 23;
|
||||
const Oid REGPROCOID = 24;
|
||||
const Oid TEXTOID = 25;
|
||||
const Oid OIDOID = 26;
|
||||
const Oid TIDOID = 27;
|
||||
const Oid XIDOID = 28;
|
||||
const Oid CIDOID = 29;
|
||||
const Oid OIDVECTOROID = 30;
|
||||
const Oid JSONOID = 114;
|
||||
const Oid XMLOID = 142;
|
||||
const Oid PGNODETREEOID = 194;
|
||||
const Oid PGDDLCOMMANDOID = 32;
|
||||
const Oid POINTOID = 600;
|
||||
const Oid LSEGOID = 601;
|
||||
const Oid PATHOID = 602;
|
||||
const Oid BOXOID = 603;
|
||||
const Oid POLYGONOID = 604;
|
||||
const Oid LINEOID = 628;
|
||||
const Oid FLOAT4OID = 700;
|
||||
const Oid FLOAT8OID = 701;
|
||||
const Oid ABSTIMEOID = 702;
|
||||
const Oid RELTIMEOID = 703;
|
||||
const Oid TINTERVALOID = 704;
|
||||
const Oid UNKNOWNOID = 705;
|
||||
const Oid CIRCLEOID = 718;
|
||||
const Oid CASHOID = 790;
|
||||
const Oid MACADDROID = 829;
|
||||
const Oid INETOID = 869;
|
||||
const Oid CIDROID = 650;
|
||||
const Oid INT2ARRAYOID = 1005;
|
||||
const Oid INT4ARRAYOID = 1007;
|
||||
const Oid TEXTARRAYOID = 1009;
|
||||
const Oid OIDARRAYOID = 1028;
|
||||
const Oid FLOAT4ARRAYOID = 1021;
|
||||
const Oid ACLITEMOID = 1033;
|
||||
const Oid CSTRINGARRAYOID = 1263;
|
||||
const Oid BPCHAROID = 1042;
|
||||
const Oid VARCHAROID = 1043;
|
||||
const Oid DATEOID = 1082;
|
||||
const Oid TIMEOID = 1083;
|
||||
const Oid TIMESTAMPOID = 1114;
|
||||
const Oid TIMESTAMPTZOID = 1184;
|
||||
const Oid INTERVALOID = 1186;
|
||||
const Oid TIMETZOID = 1266;
|
||||
const Oid BITOID = 1560;
|
||||
const Oid VARBITOID = 1562;
|
||||
const Oid NUMERICOID = 1700;
|
||||
const Oid REFCURSOROID = 1790;
|
||||
const Oid REGPROCEDUREOID = 2202;
|
||||
const Oid REGOPEROID = 2203;
|
||||
const Oid REGOPERATOROID = 2204;
|
||||
const Oid REGCLASSOID = 2205;
|
||||
const Oid REGTYPEOID = 2206;
|
||||
const Oid REGROLEOID = 4096;
|
||||
const Oid REGNAMESPACEOID = 4089;
|
||||
const Oid REGTYPEARRAYOID = 2211;
|
||||
const Oid UUIDOID = 2950;
|
||||
const Oid LSNOID = 3220;
|
||||
const Oid TSVECTOROID = 3614;
|
||||
const Oid GTSVECTOROID = 3642;
|
||||
const Oid TSQUERYOID = 3615;
|
||||
const Oid REGCONFIGOID = 3734;
|
||||
const Oid REGDICTIONARYOID = 3769;
|
||||
const Oid JSONBOID = 3802;
|
||||
const Oid INT4RANGEOID = 3904;
|
||||
const Oid RECORDOID = 2249;
|
||||
const Oid RECORDARRAYOID = 2287;
|
||||
const Oid CSTRINGOID = 2275;
|
||||
const Oid ANYOID = 2276;
|
||||
const Oid ANYARRAYOID = 2277;
|
||||
const Oid VOIDOID = 2278;
|
||||
const Oid TRIGGEROID = 2279;
|
||||
const Oid EVTTRIGGEROID = 3838;
|
||||
const Oid LANGUAGE_HANDLEROID = 2280;
|
||||
const Oid INTERNALOID = 2281;
|
||||
const Oid OPAQUEOID = 2282;
|
||||
const Oid ANYELEMENTOID = 2283;
|
||||
const Oid ANYNONARRAYOID = 2776;
|
||||
const Oid ANYENUMOID = 3500;
|
||||
const Oid FDW_HANDLEROID = 3115;
|
||||
const Oid TSM_HANDLEROID = 3310;
|
||||
const Oid ANYRANGEOID = 3831;
|
||||
// const Oid BOOLOID = 16;
|
||||
// const Oid BYTEAOID = 17;
|
||||
// const Oid CHAROID = 18;
|
||||
// const Oid NAMEOID = 19;
|
||||
// const Oid INT8OID = 20;
|
||||
// const Oid INT2OID = 21;
|
||||
// const Oid INT2VECTOROID = 22;
|
||||
// const Oid INT4OID = 23;
|
||||
// const Oid REGPROCOID = 24;
|
||||
// const Oid TEXTOID = 25;
|
||||
// const Oid OIDOID = 26;
|
||||
// const Oid TIDOID = 27;
|
||||
// const Oid XIDOID = 28;
|
||||
// const Oid CIDOID = 29;
|
||||
// const Oid OIDVECTOROID = 30;
|
||||
// const Oid JSONOID = 114;
|
||||
// const Oid XMLOID = 142;
|
||||
// const Oid PGNODETREEOID = 194;
|
||||
// const Oid PGDDLCOMMANDOID = 32;
|
||||
// const Oid POINTOID = 600;
|
||||
// const Oid LSEGOID = 601;
|
||||
// const Oid PATHOID = 602;
|
||||
// const Oid BOXOID = 603;
|
||||
// const Oid POLYGONOID = 604;
|
||||
// const Oid LINEOID = 628;
|
||||
// const Oid FLOAT4OID = 700;
|
||||
// const Oid FLOAT8OID = 701;
|
||||
// const Oid ABSTIMEOID = 702;
|
||||
// const Oid RELTIMEOID = 703;
|
||||
// const Oid TINTERVALOID = 704;
|
||||
// const Oid UNKNOWNOID = 705;
|
||||
// const Oid CIRCLEOID = 718;
|
||||
// const Oid CASHOID = 790;
|
||||
// const Oid MACADDROID = 829;
|
||||
// const Oid INETOID = 869;
|
||||
// const Oid CIDROID = 650;
|
||||
// const Oid INT2ARRAYOID = 1005;
|
||||
// const Oid INT4ARRAYOID = 1007;
|
||||
// const Oid TEXTARRAYOID = 1009;
|
||||
// const Oid OIDARRAYOID = 1028;
|
||||
// const Oid FLOAT4ARRAYOID = 1021;
|
||||
// const Oid ACLITEMOID = 1033;
|
||||
// const Oid CSTRINGARRAYOID = 1263;
|
||||
// const Oid BPCHAROID = 1042;
|
||||
// const Oid VARCHAROID = 1043;
|
||||
// const Oid DATEOID = 1082;
|
||||
// const Oid TIMEOID = 1083;
|
||||
// const Oid TIMESTAMPOID = 1114;
|
||||
// const Oid TIMESTAMPTZOID = 1184;
|
||||
// const Oid INTERVALOID = 1186;
|
||||
// const Oid TIMETZOID = 1266;
|
||||
// const Oid BITOID = 1560;
|
||||
// const Oid VARBITOID = 1562;
|
||||
// const Oid NUMERICOID = 1700;
|
||||
// const Oid REFCURSOROID = 1790;
|
||||
// const Oid REGPROCEDUREOID = 2202;
|
||||
// const Oid REGOPEROID = 2203;
|
||||
// const Oid REGOPERATOROID = 2204;
|
||||
// const Oid REGCLASSOID = 2205;
|
||||
// const Oid REGTYPEOID = 2206;
|
||||
// const Oid REGROLEOID = 4096;
|
||||
// const Oid REGNAMESPACEOID = 4089;
|
||||
// const Oid REGTYPEARRAYOID = 2211;
|
||||
// const Oid UUIDOID = 2950;
|
||||
// const Oid LSNOID = 3220;
|
||||
// const Oid TSVECTOROID = 3614;
|
||||
// const Oid GTSVECTOROID = 3642;
|
||||
// const Oid TSQUERYOID = 3615;
|
||||
// const Oid REGCONFIGOID = 3734;
|
||||
// const Oid REGDICTIONARYOID = 3769;
|
||||
// const Oid JSONBOID = 3802;
|
||||
// const Oid INT4RANGEOID = 3904;
|
||||
// const Oid RECORDOID = 2249;
|
||||
// const Oid RECORDARRAYOID = 2287;
|
||||
// const Oid CSTRINGOID = 2275;
|
||||
// const Oid ANYOID = 2276;
|
||||
// const Oid ANYARRAYOID = 2277;
|
||||
// const Oid VOIDOID = 2278;
|
||||
// const Oid TRIGGEROID = 2279;
|
||||
// const Oid EVTTRIGGEROID = 3838;
|
||||
// const Oid LANGUAGE_HANDLEROID = 2280;
|
||||
// const Oid INTERNALOID = 2281;
|
||||
// const Oid OPAQUEOID = 2282;
|
||||
// const Oid ANYELEMENTOID = 2283;
|
||||
// const Oid ANYNONARRAYOID = 2776;
|
||||
// const Oid ANYENUMOID = 3500;
|
||||
// const Oid FDW_HANDLEROID = 3115;
|
||||
// const Oid TSM_HANDLEROID = 3310;
|
||||
// const Oid ANYRANGEOID = 3831;
|
||||
|
||||
|
||||
class Params;
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ namespace {
|
|||
}
|
||||
|
||||
|
||||
Oid Pgsql::ElemOidFromArrayOid(Oid oid)
|
||||
Oid Pgsql::ElemOidFromArrayOid(Oid oid) noexcept
|
||||
{
|
||||
|
||||
auto iter = std::lower_bound(g_ArrayToElem.begin(), g_ArrayToElem.end(),
|
||||
|
|
@ -173,11 +173,11 @@ Oid Pgsql::ElemOidFromArrayOid(Oid oid)
|
|||
return l.array < r.array;
|
||||
});
|
||||
if (iter == g_ArrayToElem.end())
|
||||
throw std::runtime_error("ElemOidFromArrayOid Oid not found");
|
||||
return InvalidOid;
|
||||
return iter->elem;
|
||||
}
|
||||
|
||||
Oid Pgsql::ArrayOidFromElemOid(Oid oid)
|
||||
Oid Pgsql::ArrayOidFromElemOid(Oid oid) noexcept
|
||||
{
|
||||
auto iter = std::lower_bound(g_ElemToArray.begin(), g_ElemToArray.end(),
|
||||
ElemArray{oid, oid},
|
||||
|
|
@ -186,7 +186,6 @@ Oid Pgsql::ArrayOidFromElemOid(Oid oid)
|
|||
return l.elem < r.elem;
|
||||
});
|
||||
if (iter == g_ElemToArray.end())
|
||||
throw std::runtime_error("ElemOidFromArrayOid Oid not found");
|
||||
return InvalidOid;
|
||||
return iter->array;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ namespace Pgsql {
|
|||
constexpr Oid regoperator_oid = 2204;
|
||||
constexpr Oid regclass_oid = 2205;
|
||||
constexpr Oid regtype_oid = 2206;
|
||||
constexpr Oid any_oid = 2276;
|
||||
constexpr Oid uuid_oid = 2950;
|
||||
constexpr Oid txid_snapshot_oid = 2970;
|
||||
constexpr Oid pg_lsn_oid = 3220;
|
||||
|
|
@ -140,8 +141,19 @@ namespace Pgsql {
|
|||
constexpr Oid regnamespace_array_oid = 4090;
|
||||
constexpr Oid regrole_array_oid = 4097;
|
||||
|
||||
Oid ElemOidFromArrayOid(Oid oid);
|
||||
Oid ArrayOidFromElemOid(Oid oid);
|
||||
/** If oid is an array oid then it returns the corresponding element oid.
|
||||
* It oid is not an array the functions returns InvalidOid.
|
||||
* This function only works for the predefined postgresql types.
|
||||
* If you need it to work for user defined types then use the system catalogue.
|
||||
*/
|
||||
Oid ElemOidFromArrayOid(Oid oid) noexcept;
|
||||
/** If oid is a non array oid then it returns the corresponding array oid.
|
||||
* It oid is a array oid or oid is unknown it returns InvalidOid.
|
||||
* This function only works for the predefined postgresql types.
|
||||
* If you need it to work for user defined types then use the system catalogue.
|
||||
*
|
||||
*/
|
||||
Oid ArrayOidFromElemOid(Oid oid) noexcept;
|
||||
|
||||
template <typename T>
|
||||
class OidFor {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue