Message-ID: From: "rtrier (@rtrier)" To: "pgjdbc/pgjdbc" Date: Sun, 09 Mar 2025 14:44:26 +0000 Subject: [pgjdbc/pgjdbc] issue #3562: After insert with PreparedStatement into table with complex types querying leads to resultset with incorrect type List-Id: X-GitHub-Assignees: davecramer X-GitHub-Author-Id: 42410362 X-GitHub-Author-Login: rtrier X-GitHub-Issue: 3562 X-GitHub-Repo: pgjdbc/pgjdbc X-GitHub-State: open X-GitHub-Type: issue X-GitHub-Url: https://github.com/pgjdbc/pgjdbc/issues/3562 Content-Type: text/plain; charset=utf-8 After creation of a databaseConnection I call addDataType multible times `pgconn.addDataType("\"xplan_gml\".\"xp_gemeinde\"", Gemeinde.class);` `pgconn.addDataType("\"xplan_gml\".\"xp_planaufstellendegemeinde\"", PlanaufstellendeGemeinde.class);` `pgconn.addDataType("\"xplan_gml\".\"xp_spezexternereferenz\"", PGExterneReferenz.class);` `pgconn.addDataType("\"xplan_gml\".\"so_planart\"", PG_SO_Planart.class);` `pgconn.addDataType("\"xplan_gml\".\"bp_status\"", CodeList.class);` `pgconn.addDataType("\"bp_status\"", CodeList.class);` If I make a select Statement the MetaData of the ResultSet is correct: `ColumnName Type ColumnClassName ColumnTypeName` `gml_id 1111 java.util.UUID uuid` `name 12 java.lang.String varchar` `nummer 12 java.lang.String varchar` `gemeinde 2003 java.sql.Array "xplan_gml"."_xp_gemeinde"` `externereferenz 2003 java.sql.Array "xplankonverter"."_xp_spezexternereferenzauslegung"` `inkrafttretensdatum 91 java.sql.Date date` `auslegungsstartdatum 2003 java.sql.Array _date` `auslegungsenddatum 2003 java.sql.Array _date` `rechtsstand 12 java.lang.String "xplan_gml"."bp_rechtsstand"` `planart 2003 java.sql.Array "xplan_gml"."_bp_planart"` `raeumlichergeltungsbereich 1111 org.postgis.jts.JtsGeometry geometry` `konvertierung_id 4 java.lang.Integer int4` `internalid 12 java.lang.String varchar` `aendert 2003 java.sql.Array "xplan_gml"."_xp_verbundenerplan"` `wurdegeaendertvon 2003 java.sql.Array "xplan_gml"."_xp_verbundenerplan"` `status 2002 de.gdiservice.bplan.CodeList "xplan_gml"."bp_status"` `verfahren 12 java.lang.String "xplan_gml"."bp_verfahren"` `untergangsdatum 91 java.sql.Date date` `genehmigungsdatum 91 java.sql.Date date` `gruenordnungsplan -7 java.lang.Boolean bool` `ausfertigungsdatum 91 java.sql.Date date` `durchfuehrungsvertrag -7 java.lang.Boolean bool` `erschliessungsvertrag -7 java.lang.Boolean bool` `rechtsverordnungsdatum 91 java.sql.Date date` `satzungsbeschlussdatum 91 java.sql.Date date` `staedtebaulichervertrag -7 java.lang.Boolean bool` `planaufstellendegemeinde 2003 java.sql.Array "xplan_gml"."_xp_planaufstellendegemeinde"` `veraenderungssperredatum 91 java.sql.Date date` `aufstellungsbeschlussdatum 91 java.sql.Date date` `traegerbeteiligungsenddatum 2003 java.sql.Array _date` `veraenderungssperreenddatum 91 java.sql.Date date` `traegerbeteiligungsstartdatum 2003 java.sql.Array _date` `verlaengerungveraenderungssperre 12 java.lang.String "xplan_gml"."xp_verlaengerungveraenderungssperre"` `veraenderungssperrebeschlussdatum 91 java.sql.Date date` If I insert into the table a row, which failed because the count of values in the column gemeinde is not correct, I get an exception as expected. so far so good. If I call with the same connection a select statement the MetaData looks like: `ColumnName Type ColumnClassName ColumnTypeName` `gml_id 1111 java.util.UUID uuid` `name 12 java.lang.String varchar` `nummer 12 java.lang.String varchar` `gemeinde 2003 java.sql.Array _xp_gemeinde` `externereferenz 2003 java.sql.Array _xp_spezexternereferenzauslegung` `inkrafttretensdatum 91 java.sql.Date date` `auslegungsstartdatum 2003 java.sql.Array _date` `auslegungsenddatum 2003 java.sql.Array _date` `rechtsstand 12 java.lang.String bp_rechtsstand` `planart 2003 java.sql.Array _bp_planart` `raeumlichergeltungsbereich 1111 org.postgis.jts.JtsGeometry geometry` `konvertierung_id 4 java.lang.Integer int4` `internalid 12 java.lang.String varchar` `aendert 2003 java.sql.Array _xp_verbundenerplan` `wurdegeaendertvon 2003 java.sql.Array _xp_verbundenerplan` `status 2002 java.lang.String bp_status` `verfahren 12 java.lang.String bp_verfahren` `untergangsdatum 91 java.sql.Date date` `genehmigungsdatum 91 java.sql.Date date` `gruenordnungsplan -7 java.lang.Boolean bool` `ausfertigungsdatum 91 java.sql.Date date` `durchfuehrungsvertrag -7 java.lang.Boolean bool` `erschliessungsvertrag -7 java.lang.Boolean bool` `rechtsverordnungsdatum 91 java.sql.Date date` `satzungsbeschlussdatum 91 java.sql.Date date` `staedtebaulichervertrag -7 java.lang.Boolean bool` `planaufstellendegemeinde 2003 java.sql.Array "xplan_gml"."_xp_planaufstellendegemeinde"` `veraenderungssperredatum 91 java.sql.Date date` `aufstellungsbeschlussdatum 91 java.sql.Date date` `traegerbeteiligungsenddatum 2003 java.sql.Array _date` `veraenderungssperreenddatum 91 java.sql.Date date` `traegerbeteiligungsstartdatum 2003 java.sql.Array _date` `verlaengerungveraenderungssperre 12 java.lang.String "xplan_gml"."xp_verlaengerungveraenderungssperre"` `veraenderungssperrebeschlussdatum 91 java.sql.Date date` At the end this leads that the status for instance is not from Type de.gdiservice.bplan.CodeList. **Driver Version?** JDBC 42.6.0 and 42.7.5 **Java Version?** 11 **OS Version?** Windows 10 **PostgreSQL Version?** "PostgreSQL 16.8 (Debian 16.8-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit" [metadata-ok.txt](https://github.com/user-attachments/files/19150262/metadata-ok.txt) [metadata-withErrors.txt](https://github.com/user-attachments/files/19150261/metadata-withErrors.txt)