summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2016-03-03 19:41:54 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-03-04 11:47:21 +0000
commit95b10e373d117f3ed3e53987aa40a65d1ca6d1a0 (patch)
treeb48426cbd12bb6c9f39ca643f568ffbd8a460598 /connectivity
parent7187be3c1e7fc8f46bbeb1d2e79fb13541785887 (diff)
tdf#92538 use proper schema name for type names
Change-Id: I7e428e4530765925bd35c7f4fcde7f95ceb12243 Reviewed-on: https://gerrit.libreoffice.org/22876 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/source/drivers/postgresql/pq_databasemetadata.cxx22
1 files changed, 17 insertions, 5 deletions
diff --git a/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx b/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
index a742d4aa7742..14cb74e07638 100644
--- a/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
+++ b/connectivity/source/drivers/postgresql/pq_databasemetadata.cxx
@@ -2192,6 +2192,16 @@ static sal_Int32 getMaxScale( sal_Int32 dataType )
return ret;
}
+namespace
+{
+ OUString construct_full_typename(OUString ns, OUString tn)
+ {
+ if(ns.isEmpty() || ns == "pg_catalog")
+ return tn;
+ else
+ return ns + "." + tn;
+ }
+}
static void pgTypeInfo2ResultSet(
SequenceAnyVector &vec,
@@ -2256,7 +2266,7 @@ static void pgTypeInfo2ResultSet(
row[CREATE_PARAMS] <<= OUString("length, scale");
}
- row[TYPE_NAME] <<= xRow->getString(1);
+ row[TYPE_NAME] <<= construct_full_typename(xRow->getString(6), xRow->getString(1));
row[DATA_TYPE] <<= OUString::number(dataType);
row[PRECISION] <<= OUString::number( precision );
sal_Int32 nullable = xRow->getBoolean(4) ?
@@ -2298,8 +2308,9 @@ static void pgTypeInfo2ResultSet(
"pg_type.typtype AS typtype," //2
"pg_type.typlen AS typlen," //3
"pg_type.typnotnull AS typnotnull," //4
- "pg_type.typname AS typname " //5
- "FROM pg_type "
+ "pg_type.typname AS typname, " //5
+ "pg_namespace.nspname as typns " //6
+ "FROM pg_type LEFT JOIN pg_namespace ON pg_type.typnamespace=pg_namespace.oid "
"WHERE pg_type.typtype = 'b' "
"OR pg_type.typtype = 'p'"
);
@@ -2313,8 +2324,9 @@ static void pgTypeInfo2ResultSet(
"t2.typtype AS typtype,"
"t2.typlen AS typlen,"
"t2.typnotnull AS typnotnull,"
- "t2.typname as realtypname "
- "FROM pg_type as t1 LEFT JOIN pg_type AS t2 ON t1.typbasetype=t2.oid "
+ "t2.typname as realtypname, "
+ "pg_namespace.nspname as typns "
+ "FROM pg_type as t1 LEFT JOIN pg_type AS t2 ON t1.typbasetype=t2.oid LEFT JOIN pg_namespace ON t1.typnamespace=pg_namespace.oid "
"WHERE t1.typtype = 'd'" );
pgTypeInfo2ResultSet( vec, rs );