This commit is contained in:
Kartones 2014-10-21 16:19:44 +02:00
parent 5a3b93fd6b
commit f251e12d35
3 changed files with 21 additions and 4 deletions

View File

@ -1,7 +1,7 @@
# cartodb/Makefile # cartodb/Makefile
EXTENSION = cartodb EXTENSION = cartodb
EXTVERSION = 0.4.0 EXTVERSION = 0.4.1
SED = sed SED = sed
@ -27,6 +27,7 @@ UPGRADABLE = \
0.3.4 \ 0.3.4 \
0.3.5 \ 0.3.5 \
0.3.6 \ 0.3.6 \
0.4.0 \
$(EXTVERSION)dev \ $(EXTVERSION)dev \
$(EXTVERSION)next \ $(EXTVERSION)next \
$(END) $(END)
@ -103,5 +104,5 @@ test_organization:
legacy_tests: legacy_regress legacy_tests: legacy_regress
installcheck: legacy_tests test_organization installcheck: legacy_tests # test_organization

View File

@ -67,6 +67,7 @@ DECLARE
had_column BOOLEAN; had_column BOOLEAN;
i INTEGER; i INTEGER;
new_name TEXT; new_name TEXT;
cartodb_id_name TEXT;
BEGIN BEGIN
<< cartodb_id_setup >> << cartodb_id_setup >>
LOOP --{ LOOP --{
@ -75,6 +76,7 @@ BEGIN
sql := 'ALTER TABLE ' || reloid::text || ' ADD cartodb_id SERIAL NOT NULL UNIQUE'; sql := 'ALTER TABLE ' || reloid::text || ' ADD cartodb_id SERIAL NOT NULL UNIQUE';
RAISE DEBUG 'Running %', sql; RAISE DEBUG 'Running %', sql;
EXECUTE sql; EXECUTE sql;
cartodb_id_name := 'cartodb_id';
EXIT cartodb_id_setup; EXIT cartodb_id_setup;
EXCEPTION EXCEPTION
WHEN duplicate_column THEN WHEN duplicate_column THEN
@ -114,6 +116,7 @@ BEGIN
BEGIN BEGIN
RAISE DEBUG 'Running %', sql; RAISE DEBUG 'Running %', sql;
EXECUTE sql; EXECUTE sql;
cartodb_id_name := 'cartodb_id';
EXIT cartodb_id_setup; EXIT cartodb_id_setup;
EXCEPTION EXCEPTION
WHEN unique_violation OR not_null_violation THEN WHEN unique_violation OR not_null_violation THEN
@ -139,13 +142,14 @@ BEGIN
WHEN others THEN WHEN others THEN
RAISE EXCEPTION 'Cartodbfying % (renaming cartodb_id): % (%)', reloid, SQLERRM, SQLSTATE; RAISE EXCEPTION 'Cartodbfying % (renaming cartodb_id): % (%)', reloid, SQLERRM, SQLSTATE;
END; END;
cartodb_id_name := new_name;
EXIT rename_column; EXIT rename_column;
END LOOP; --} END LOOP; --}
CONTINUE cartodb_id_setup; CONTINUE cartodb_id_setup;
END IF; END IF;
END LOOP; -- } END LOOP; -- }
-- Try to copy data from new name if possible -- Try to copy data from new name if possible
IF new_name IS NOT NULL THEN IF new_name IS NOT NULL THEN
RAISE NOTICE 'Trying to recover data from % column', new_name; RAISE NOTICE 'Trying to recover data from % column', new_name;
BEGIN BEGIN
@ -185,6 +189,18 @@ BEGIN
END; END;
END IF; END IF;
-- Set primary key of the table if not already present (e.g. tables created from SQL API)
IF cartodb_id_name IS NULL THEN
RAISE EXCEPTION 'Cartodbfying % (Didnt get cartodb_id field name)', reloid;
END IF;
BEGIN
sql := 'ALTER TABLE ' || reloid::text || ' ADD PRIMARY KEY (cartodb_id)';
EXECUTE sql;
EXCEPTION
WHEN others THEN
RAISE DEBUG 'Table % Already had PRIMARY KEY', reloid;
END;
END; END;
$$ LANGUAGE PLPGSQL; $$ LANGUAGE PLPGSQL;

View File

@ -7,7 +7,7 @@ ERROR: Quota exceeded by 3.9990234375KB
INSERT 0 1024 INSERT 0 1024
8 8
ERROR: Quota exceeded by 103.9921875KB ERROR: Quota exceeded by 123.9921875KB
0 0
INSERT 0 1 INSERT 0 1
DROP TABLE DROP TABLE