Merge pull request #319 from CartoDB/seq-drop

Sequence Rename to avoid Collision. Helps interop with older ogr2ogr.
This commit is contained in:
Paul Ramsey 2018-03-09 10:00:59 -08:00 committed by GitHub
commit 7559151ab5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 0 deletions

View File

@ -1,3 +1,6 @@
0.22.0 (yyyy-mm-dd)
* Fix: allow older ogr2ogr to work in -append mode (#319)
0.21.0 (2018-02-15)
* Add optional parameter to limit the number of cells in grid-generation functions #322
* Fix: grant usage on cartodb_id sequence when sharing read write #323

View File

@ -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