From 85ffa18ca676cc9a5886371478cfbae1dd6efdb5 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sun, 20 Oct 2024 17:54:13 +0200 Subject: [PATCH] [BUGFIX] [PostgreSQL] Properly take into account 'name' type --- src/providers/postgres/qgspostgresprovider.cpp | 2 +- tests/src/python/test_provider_postgres.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/providers/postgres/qgspostgresprovider.cpp b/src/providers/postgres/qgspostgresprovider.cpp index 2036634dc604..92f6f4a55b27 100644 --- a/src/providers/postgres/qgspostgresprovider.cpp +++ b/src/providers/postgres/qgspostgresprovider.cpp @@ -1302,7 +1302,7 @@ bool QgsPostgresProvider::loadFields() // PG 12 returns "name" type for some system table fields (e.g. information_schema.tables) else if ( fieldTypeName == QLatin1String( "name" ) ) { - fieldSubType = QMetaType::Type::QString; + fieldType = QMetaType::Type::QString; fieldSize = 63; } else diff --git a/tests/src/python/test_provider_postgres.py b/tests/src/python/test_provider_postgres.py index c44ecdea0972..117a33b9331a 100644 --- a/tests/src/python/test_provider_postgres.py +++ b/tests/src/python/test_provider_postgres.py @@ -3475,6 +3475,15 @@ def testPktLowerCase(self): cur.execute(sql_pk) self.assertEqual(cur.fetchall(), [('dep', 'character varying')]) + def testNameType(self): + + vl = QgsVectorLayer(self.dbconn + ' sslmode=disable key=\'"table_catalog","table_schema","table_name"\' table="information_schema"."tables" () sql=', 'test', 'postgres') + self.assertTrue(vl.isValid()) + + feat = next(vl.getFeatures()) + self.assertTrue(feat.isValid()) + self.assertIsNotNone(feat.attributes()[0]) + def testColumnRestrictedLayerIsEditable(self): """ Test editability of table with partial column insert privs