diff --git a/pglab/PgDatabaseCatalog.cpp b/pglab/PgDatabaseCatalog.cpp index fd352d0..3fe5f2a 100644 --- a/pglab/PgDatabaseCatalog.cpp +++ b/pglab/PgDatabaseCatalog.cpp @@ -56,7 +56,16 @@ QString getTypeDisplayString(const PgDatabaseCatalog &cat, Oid oid) { auto tc = cat.types(); auto t = tc->getByKey(oid); - return t.name; + QString s; + if (t.category == TypCategory::Array) { + auto et = tc->getByKey(t.elem); + s = et.name; + s += "[]"; + } + else { + s = t.name; + } + return s; } diff --git a/pglab/PgType.h b/pglab/PgType.h index b46aaa2..e82f2e0 100644 --- a/pglab/PgType.h +++ b/pglab/PgType.h @@ -38,29 +38,29 @@ public: bool byval = false;//"boolean";"NO" QString type;//""char"";"NO" TypCategory category;//""char"";"NO" - bool typispreferred = false;//"boolean";"NO" - bool typisdefined = false;//"boolean";"NO" - QString typdelim;//""char"";"NO" - Oid typrelid = InvalidOid;//"oid";"NO" - Oid typelem = InvalidOid;//"oid";"NO" - Oid typarray = InvalidOid;//"oid";"NO" - QString typinput;//regproc";"NO" - QString typoutput;//"regproc";"NO" - QString typreceive;//"regproc";"NO" - QString typsend;//"regproc";"NO" - QString typmodin;//"regproc";"NO" - QString typmodout;//"regproc";"NO" - QString typanalyze;//"regproc";"NO" - QString typalign;//""char"";"NO" - QString typstorage;//""char"";"NO" - bool typnotnull = false;//"boolean";"NO" - Oid typbasetype = InvalidOid;//"oid";"NO" - int typtypmod = -1;//"integer";"NO" - int typndims = 0;//"integer";"NO" - Oid typcollation = InvalidOid;//"oid";"NO" - QString typdefaultbin;//"pg_node_tree";"YES" + bool ispreferred = false;//"boolean";"NO" + bool isdefined = false;//"boolean";"NO" + QString delim;//""char"";"NO" + Oid relid = InvalidOid;//"oid";"NO" + Oid elem = InvalidOid;//"oid";"NO" + Oid array = InvalidOid;//"oid";"NO" + QString input;//regproc";"NO" + QString output;//"regproc";"NO" + QString receive;//"regproc";"NO" + QString send;//"regproc";"NO" + QString modin;//"regproc";"NO" + QString modout;//"regproc";"NO" + QString analyze;//"regproc";"NO" + QString align;//""char"";"NO" + QString storage;//""char"";"NO" + bool notnull = false;//"boolean";"NO" + Oid basetype = InvalidOid;//"oid";"NO" + int typmod = -1;//"integer";"NO" + int ndims = 0;//"integer";"NO" + Oid collation = InvalidOid;//"oid";"NO" + QString defaultbin;//"pg_node_tree";"YES" QString typdefault;//"text";"YES" - QString typacl;//"ARRAY";"YES" + QString acl;//"ARRAY";"YES" bool operator==(Oid _oid) const { return oid == _oid; } bool operator==(const QString &n) const { return name == n; } diff --git a/pglab/PgTypeContainer.cpp b/pglab/PgTypeContainer.cpp index ed617c1..c850be8 100644 --- a/pglab/PgTypeContainer.cpp +++ b/pglab/PgTypeContainer.cpp @@ -51,29 +51,29 @@ void PgTypeContainer::load(const Pgsql::Result &res) v.byval << row.get(5); // false;//"boolean";"NO" v.type << row.get(6);//""char"";"NO" v.category << row.get(7);//""char"";"NO" - v.typispreferred << row.get(8); //false;//"boolean";"NO" - v.typisdefined << row.get(9); //false;//"boolean";"NO" - v.typdelim << row.get(10); //""char"";"NO" - v.typrelid << row.get(11); // InvalidOid;//"oid";"NO" - v.typelem << row.get(12); // InvalidOid;//"oid";"NO" - v.typarray << row.get(13); // InvalidOid;//"oid";"NO" - v.typinput << row.get(14);//regproc";"NO" - v.typoutput << row.get(15);//"regproc";"NO" - v.typreceive << row.get(16);//"regproc";"NO" - v.typsend << row.get(17);//"regproc";"NO" - v.typmodin << row.get(18);//"regproc";"NO" - v.typmodout << row.get(19);//"regproc";"NO" - v.typanalyze << row.get(20);//"regproc";"NO" - v.typalign << row.get(21); // //""char"";"NO" - v.typstorage << row.get(22); //""char"";"NO" - v.typnotnull << row.get(23); //"boolean";"NO" - v.typbasetype << row.get(24); //"oid";"NO" - v.typtypmod << row.get(25); //-1;//"integer";"NO" - v.typndims << row.get(26); //"integer";"NO" - v.typcollation << row.get(27); //InvalidOid;//"oid";"NO" - v.typdefaultbin << row.get(28);//"pg_node_tree";"YES" + v.ispreferred << row.get(8); //false;//"boolean";"NO" + v.isdefined << row.get(9); //false;//"boolean";"NO" + v.delim << row.get(10); //""char"";"NO" + v.relid << row.get(11); // InvalidOid;//"oid";"NO" + v.elem << row.get(12); // InvalidOid;//"oid";"NO" + v.array << row.get(13); // InvalidOid;//"oid";"NO" + v.input << row.get(14);//regproc";"NO" + v.output << row.get(15);//"regproc";"NO" + v.receive << row.get(16);//"regproc";"NO" + v.send << row.get(17);//"regproc";"NO" + v.modin << row.get(18);//"regproc";"NO" + v.modout << row.get(19);//"regproc";"NO" + v.analyze << row.get(20);//"regproc";"NO" + v.align << row.get(21); // //""char"";"NO" + v.storage << row.get(22); //""char"";"NO" + v.notnull << row.get(23); //"boolean";"NO" + v.basetype << row.get(24); //"oid";"NO" + v.typmod << row.get(25); //-1;//"integer";"NO" + v.ndims << row.get(26); //"integer";"NO" + v.collation << row.get(27); //InvalidOid;//"oid";"NO" + v.defaultbin << row.get(28);//"pg_node_tree";"YES" v.typdefault << row.get(29);//"text";"YES" - v.typacl << row.get(30);//"ARRAY";"YES" + v.acl << row.get(30);//"ARRAY";"YES" m_container.push_back(v); } std::sort(m_container.begin(), m_container.end());