diff --git a/NEWS.md b/NEWS.md index 85797da..b1956a7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,5 @@ -0.22.0 (TBD) +0.22.0 (yyyy-mm-dd) +* Fix: allow older ogr2ogr to work in -append mode (#319) * Refactors CDB_QuantileBins to rely on PostgreSQL function `percentile_disc` #316 0.21.0 (2018-02-15) diff --git a/scripts-available/CDB_CartodbfyTable.sql b/scripts-available/CDB_CartodbfyTable.sql index 9ccf47c..a4e0d31 100644 --- a/scripts-available/CDB_CartodbfyTable.sql +++ b/scripts-available/CDB_CartodbfyTable.sql @@ -791,6 +791,7 @@ DECLARE relname TEXT; relschema TEXT; + relseq TEXT; destoid REGCLASS; destname TEXT; @@ -897,7 +898,22 @@ BEGIN END IF; -- We must rewrite, so here we go... + + -- Our desired PK sequence name + -- We are going to drop the source table when we're done anyways + -- but it's possible the source PK sequence is living in a name we would like to use + -- so we check to see if that's the case, and rename it out of the way + IF has_usable_primary_key AND has_usable_pk_sequence THEN + -- See if the existing sequence is squatting on our preferred name + destseq := Format('%s_%s_seq', relname, const.pkey); + SELECT pg_catalog.pg_get_serial_sequence(Format('%I.%I', relschema, relname), const.pkey) + INTO relseq; + -- If it's the name we want, then rename it + IF relseq IS NOT NULL AND relseq = Format('%I.%I', destschema, destseq) THEN + PERFORM _CDB_SQL(Format('ALTER SEQUENCE %s RENAME TO %s_tmp', relseq, destseq), '_CDB_Rewrite_Table'); + END IF; + END IF; -- Put the primary key sequence in the right schema -- If the new table is not moving, better ensure the sequence name