Re: [gdal-dev] Implications of "Multi-column primary key in [table] to supported" warning

2022-03-04 Thread DUTRIEUX Loic
Thanks for the many insights Jukka, it has helped me a lot in thinking where to 
dig and what to look at.

First, and this is what matters the most to me, I was able to confirm data 
integrity by comparing for each table the pg version to the sqlite version. 
Some types are altered (e.g. Dates which do not exist in sqlite and therefore 
became strings, and a JSON which also became a string, even though sqlite has a 
json type) but that's not a big issue.
I confirm that Foreign keys constraint are gone, if I run a "spatialite 
mydb.sqlite .schema | grep FOREI", only the spatialite extension tables are 
left. As you said it implies that the safety net is gone and the database no 
longer prevents me from making edits I shouldn't do but since this database is 
intended mainly for read only usage and not data management, that is perfectly 
acceptable.
As for the association tables, you guessed right, the composite key is gone and 
an additional ogc_fid primary key is added.

Thanks again,
Kind regards,
Loïc

From: Rahkonen Jukka (MML) 
Sent: 03 March 2022 13:55:33
To: DUTRIEUX Loic (JRC-ISPRA); gdal-dev@lists.osgeo.org
Subject: Re: Implications of "Multi-column primary key in [table] to supported" 
warning

Hi,

If you have a table with multi-column primary key (composite key) then the 
target table in Spatialite obviously will not have the same PK. I would guess 
that none of the columns in the composite is unique and usable as PK so the 
only possibility is to create a new unique column for the PK. Therefore the 
tables that you will have are not identical with the source tables by their 
schemas. The foreign key constraints between the tables are dropped any way, 
ogr2ogr does not try to transfer them ever.

I think you can answer your question yourself by making a test with your own 
data. If all of the tables that have a composite PK get a new PK field in 
Spatialite (I guess it will of type "integer autoincrement") and if the row 
counts in source and target tables match I believe that the data has been 
transferred right. When it comes to question "is it safe to assume that db 
relations won't get mixed up" you do not have any constrained relations left in 
Spatialite. The data integrity is OK immediately after the conversion but at 
that stage there is nothing in Spatialite that prevents you from making edits 
that you should't do. But you can add similar constraints that you have in 
PostGIS afterward into SQLite 
https://urldefense.com/v3/__https://sqlite.org/foreignkeys.html__;!!DOxrgLBm!XPxXzkROhjk7yXj_UMlx2cbkKXEZfzDfmaMiH6Vp7pfUEbQ4fUUGEDTCfGCvSCFs8-qDs1E$
 . I am not sure that all type of constraints that you can have in PostGIS are 
supported in SQLite but foreign key should behave in the same way.

SQLite driver 
https://urldefense.com/v3/__https://gdal.org/drivers/vector/sqlite.html__;!!DOxrgLBm!XPxXzkROhjk7yXj_UMlx2cbkKXEZfzDfmaMiH6Vp7pfUEbQ4fUUGEDTCfGCvSCFskfue4zU$
  supports prelude_statements but if you want to re-create constraints you 
would need something like postlude_statements. It means that ogr2ogr cannot do 
the whole job but you must run the required SQL statements with ogrinfo or some 
SQLite client.

-Jukka Rahkonen-



-Alkuperäinen viesti-
Lähettäjä: gdal-dev  Puolesta DUTRIEUX Loic
Lähetetty: torstai 3. maaliskuuta 2022 13.56
Vastaanottaja: gdal-dev@lists.osgeo.org
Aihe: [gdal-dev] Implications of "Multi-column primary key in [table] to 
supported" warning

Hi everyone,

Quick question, I'm using ogr2ogr to clone a postGIS database to a spatialite 
file database (by the way, very convenient that ogr2ogr handles the transfer of 
non-spatial tables too). The database contains many-to-many relations and as a 
consequence association tables with multiple primary keys. When I run ogr2ogr I 
get a warning saying that Multi-column primary key are not supported.
Should I be worried of that warning for my use case or is it safe to assume 
that db relations won't get mixed up.

Thanks and kind regards,
Loïc
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://urldefense.com/v3/__https://lists.osgeo.org/mailman/listinfo/gdal-dev__;!!DOxrgLBm!XPxXzkROhjk7yXj_UMlx2cbkKXEZfzDfmaMiH6Vp7pfUEbQ4fUUGEDTCfGCvSCFsH0SPbLQ$
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev


Re: [gdal-dev] Implications of "Multi-column primary key in [table] to supported" warning

2022-03-03 Thread Rahkonen Jukka (MML)
Hi,

If you have a table with multi-column primary key (composite key) then the 
target table in Spatialite obviously will not have the same PK. I would guess 
that none of the columns in the composite is unique and usable as PK so the 
only possibility is to create a new unique column for the PK. Therefore the 
tables that you will have are not identical with the source tables by their 
schemas. The foreign key constraints between the tables are dropped any way, 
ogr2ogr does not try to transfer them ever.

I think you can answer your question yourself by making a test with your own 
data. If all of the tables that have a composite PK get a new PK field in 
Spatialite (I guess it will of type "integer autoincrement") and if the row 
counts in source and target tables match I believe that the data has been 
transferred right. When it comes to question "is it safe to assume that db 
relations won't get mixed up" you do not have any constrained relations left in 
Spatialite. The data integrity is OK immediately after the conversion but at 
that stage there is nothing in Spatialite that prevents you from making edits 
that you should't do. But you can add similar constraints that you have in 
PostGIS afterward into SQLite https://sqlite.org/foreignkeys.html. I am not 
sure that all type of constraints that you can have in PostGIS are supported in 
SQLite but foreign key should behave in the same way.

SQLite driver https://gdal.org/drivers/vector/sqlite.html supports 
prelude_statements but if you want to re-create constraints you would need 
something like postlude_statements. It means that ogr2ogr cannot do the whole 
job but you must run the required SQL statements with ogrinfo or some SQLite 
client.

-Jukka Rahkonen-



-Alkuperäinen viesti-
Lähettäjä: gdal-dev  Puolesta DUTRIEUX Loic
Lähetetty: torstai 3. maaliskuuta 2022 13.56
Vastaanottaja: gdal-dev@lists.osgeo.org
Aihe: [gdal-dev] Implications of "Multi-column primary key in [table] to 
supported" warning

Hi everyone,

Quick question, I'm using ogr2ogr to clone a postGIS database to a spatialite 
file database (by the way, very convenient that ogr2ogr handles the transfer of 
non-spatial tables too). The database contains many-to-many relations and as a 
consequence association tables with multiple primary keys. When I run ogr2ogr I 
get a warning saying that Multi-column primary key are not supported.
Should I be worried of that warning for my use case or is it safe to assume 
that db relations won't get mixed up.

Thanks and kind regards,
Loïc
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev


[gdal-dev] Implications of "Multi-column primary key in [table] to supported" warning

2022-03-03 Thread DUTRIEUX Loic
Hi everyone,

Quick question, I'm using ogr2ogr to clone a postGIS database to a spatialite 
file database (by the way, very convenient that ogr2ogr handles the transfer of 
non-spatial tables too). The database contains many-to-many relations and as a 
consequence association tables with multiple primary keys. When I run ogr2ogr I 
get a warning saying that Multi-column primary key are not supported.
Should I be worried of that warning for my use case or is it safe to assume 
that db relations won't get mixed up.

Thanks and kind regards,
Loïc
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev