@@ -1582,6 +1582,9 @@ void QgsPostgresProvider::enumValues( int index, QStringList& enumList )
15821582 QString fieldName = mAttributeFields .at ( index ).name ();
15831583 QString typeName = mAttributeFields .at ( index ).typeName ();
15841584
1585+ // Remove schema extension from typeName
1586+ typeName.remove ( QRegExp ( " ^([^.]+\\ .)+" ) );
1587+
15851588 // is type an enum?
15861589 QString typeSql = QString ( " SELECT typtype FROM pg_type WHERE typname=%1" ).arg ( quotedValue ( typeName ) );
15871590 QgsPostgresResult typeRes ( connectionRO ()->PQexec ( typeSql ) );
@@ -1634,12 +1637,22 @@ bool QgsPostgresProvider::parseDomainCheckConstraint( QStringList& enumValues, c
16341637 enumValues.clear ();
16351638
16361639 // is it a domain type with a check constraint?
1637- QString domainSql = QString ( " SELECT domain_name FROM information_schema.columns WHERE table_name=%1 AND column_name=%2" ).arg ( quotedValue ( mTableName ), quotedValue ( attributeName ) );
1640+ QString domainSql = QString ( " SELECT domain_name, domain_schema FROM information_schema.columns WHERE table_name=%1 AND column_name=%2" ).arg ( quotedValue ( mTableName ), quotedValue ( attributeName ) );
16381641 QgsPostgresResult domainResult ( connectionRO ()->PQexec ( domainSql ) );
1639- if ( domainResult.PQresultStatus () == PGRES_TUPLES_OK && domainResult.PQntuples () > 0 )
1642+ if ( domainResult.PQresultStatus () == PGRES_TUPLES_OK && domainResult.PQntuples () > 0 && !domainResult. PQgetvalue ( 0 , 0 ). isNull () )
16401643 {
16411644 // a domain type
1642- QString domainCheckDefinitionSql = QString ( " SELECT consrc FROM pg_constraint WHERE conname=(SELECT constraint_name FROM information_schema.domain_constraints WHERE domain_name=%1)" ).arg ( quotedValue ( domainResult.PQgetvalue ( 0 , 0 ) ) );
1645+ QString domainCheckDefinitionSql = QString ( " "
1646+ " SELECT consrc FROM pg_constraint "
1647+ " WHERE contypid =("
1648+ " SELECT oid FROM pg_type "
1649+ " WHERE typname = %1 "
1650+ " AND typnamespace =("
1651+ " SELECT oid FROM pg_namespace WHERE nspname = %2"
1652+ " )"
1653+ " )" )
1654+ .arg ( quotedValue ( domainResult.PQgetvalue ( 0 , 0 ) ) )
1655+ .arg ( quotedValue ( domainResult.PQgetvalue ( 0 , 1 ) ) );
16431656 QgsPostgresResult domainCheckRes ( connectionRO ()->PQexec ( domainCheckDefinitionSql ) );
16441657 if ( domainCheckRes.PQresultStatus () == PGRES_TUPLES_OK && domainCheckRes.PQntuples () > 0 )
16451658 {
0 commit comments