@@ -190,45 +190,102 @@ CREATE TABLE qgis_test.mls3d(
190
190
INSERT INTO qgis_test .mls3d values (1 , ' srid=4326;MultiLineString((0 0 0, 1 1 1),(2 2 2, 3 3 3))' ::geometry);
191
191
192
192
193
- CREATE TABLE qgis_test .base_table
193
+ -- ---------------------------------------
194
+ -- Test tables with INHERITS
195
+ --
196
+ -- This is bad design: the common fields
197
+ -- are replicated in child tables and
198
+ -- leads to duplicated ids in the parent
199
+ -- table
200
+ --
201
+
202
+
203
+ CREATE TABLE qgis_test .base_table_bad
194
204
(
195
205
gid serial NOT NULL ,
196
206
geom geometry(Point ,4326 ),
197
207
code character varying,
198
- CONSTRAINT base_pkey PRIMARY KEY (gid)
208
+ CONSTRAINT base_bad_pkey PRIMARY KEY (gid)
199
209
)
200
210
WITH (
201
211
OIDS= FALSE
202
212
);
203
213
204
- CREATE TABLE qgis_test .child_table
214
+ CREATE TABLE qgis_test .child_table_bad
205
215
(
206
216
gid serial NOT NULL ,
207
217
geom geometry(Point ,4326 ),
208
218
code character varying,
209
- CONSTRAINT child_pkey PRIMARY KEY (gid)
219
+ CONSTRAINT child_bad_pkey PRIMARY KEY (gid)
210
220
)
211
- INHERITS ( qgis_test .base_table )
221
+ INHERITS ( qgis_test .base_table_bad )
212
222
WITH (
213
223
OIDS= FALSE
214
224
);
215
225
216
226
217
- CREATE TABLE qgis_test .child_table2
227
+ CREATE TABLE qgis_test .child_table2_bad
218
228
(
219
229
gid serial NOT NULL ,
220
230
geom geometry(Point ,4326 ),
221
231
code character varying,
222
- CONSTRAINT child2_pkey PRIMARY KEY (gid)
232
+ CONSTRAINT child2_bad_pkey PRIMARY KEY (gid)
233
+ )
234
+ INHERITS ( qgis_test .base_table_bad )
235
+ WITH (
236
+ OIDS= FALSE
237
+ );
238
+
239
+ INSERT INTO qgis_test .child_table_bad (geom, code) VALUES (' srid=4326;Point(0 0)' ::geometry, ' child 1' );
240
+ INSERT INTO qgis_test .child_table_bad (geom, code) VALUES (' srid=4326;Point(1 1)' ::geometry, ' child 2' );
241
+
242
+
243
+ INSERT INTO qgis_test .child_table2_bad (geom, code) VALUES (' srid=4326;Point(-1 -1)' ::geometry, ' child2 1' );
244
+ INSERT INTO qgis_test .child_table2_bad (geom, code) VALUES (' srid=4326;Point(-1 1)' ::geometry, ' child2 2' );
245
+
246
+
247
+
248
+ -- ---------------------------------------
249
+ -- Test tables with INHERITS
250
+ --
251
+ -- This is good design: the common fields
252
+ -- and the pk are only in the parent table
253
+ -- no pk duplication
254
+
255
+
256
+ CREATE TABLE qgis_test .base_table_good
257
+ (
258
+ gid serial NOT NULL ,
259
+ geom geometry(Point ,4326 ),
260
+ CONSTRAINT base_good_pkey PRIMARY KEY (gid)
261
+ )
262
+ WITH (
263
+ OIDS= FALSE
264
+ );
265
+
266
+ CREATE TABLE qgis_test .child_table_good
267
+ (
268
+ code1 character varying
223
269
)
224
- INHERITS ( qgis_test .base_table )
270
+ INHERITS ( qgis_test .base_table_good )
225
271
WITH (
226
272
OIDS= FALSE
227
273
);
228
274
229
- INSERT INTO qgis_test .child_table (gid, geom, code) VALUES (1 , ' srid=4326;Point(0 0)' ::geometry, ' child 1' );
230
- INSERT INTO qgis_test .child_table (gid, geom, code) VALUES (2 , ' srid=4326;Point(1 1)' ::geometry, ' child 2' );
231
275
276
+ CREATE TABLE qgis_test .child_table2_good
277
+ (
278
+ code2 character varying
279
+ )
280
+ INHERITS ( qgis_test .base_table_good )
281
+ WITH (
282
+ OIDS= FALSE
283
+ );
284
+
285
+ INSERT INTO qgis_test .child_table_good (geom, code1) VALUES (' srid=4326;Point(0 0)' ::geometry, ' child 1' );
286
+ INSERT INTO qgis_test .child_table_good (geom, code1) VALUES (' srid=4326;Point(1 1)' ::geometry, ' child 2' );
287
+
288
+
289
+ INSERT INTO qgis_test .child_table2_good (geom, code2) VALUES (' srid=4326;Point(-1 -1)' ::geometry, ' child2 1' );
290
+ INSERT INTO qgis_test .child_table2_good (geom, code2) VALUES (' srid=4326;Point(-1 1)' ::geometry, ' child2 2' );
232
291
233
- INSERT INTO qgis_test .child_table2 (gid, geom, code) VALUES (1 , ' srid=4326;Point(-1 -1)::geometry' , ' child2 1' );
234
- INSERT INTO qgis_test .child_table2 (gid, geom, code) VALUES (2 , ' srid=4326;Point(-1 1)::geometry' , ' child2 2' );
0 commit comments