Merge pull request #168 from CartoDB/148-cartodbfy-checks-for-null-cartodb-id
148 cartodbfy checks for null cartodb id
This commit is contained in:
commit
15dd4935d6
@ -362,7 +362,7 @@ $$ LANGUAGE PLPGSQL;
|
|||||||
-- As before, this drops all the metadata and geom sync triggers
|
-- As before, this drops all the metadata and geom sync triggers
|
||||||
--
|
--
|
||||||
-- (2) _CDB_Has_Usable_Primary_ID()
|
-- (2) _CDB_Has_Usable_Primary_ID()
|
||||||
-- Returns TRUE if it can find a unique integer primary key named
|
-- Returns TRUE if it can find a unique and not null integer primary key named
|
||||||
-- 'cartodb_id' or can rename an existing key.
|
-- 'cartodb_id' or can rename an existing key.
|
||||||
-- Returns FALSE otherwise.
|
-- Returns FALSE otherwise.
|
||||||
--
|
--
|
||||||
@ -551,7 +551,7 @@ BEGIN
|
|||||||
RAISE DEBUG 'CDB(_CDB_Has_Usable_Primary_ID): %', Format('found good ''%s''', const.pkey);
|
RAISE DEBUG 'CDB(_CDB_Has_Usable_Primary_ID): %', Format('found good ''%s''', const.pkey);
|
||||||
RETURN true;
|
RETURN true;
|
||||||
|
|
||||||
-- Check and see if the column values are unique,
|
-- Check and see if the column values are unique and not null,
|
||||||
-- if they are, we can use this column...
|
-- if they are, we can use this column...
|
||||||
ELSE
|
ELSE
|
||||||
|
|
||||||
@ -559,13 +559,17 @@ BEGIN
|
|||||||
useable_key := true;
|
useable_key := true;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
sql := Format('ALTER TABLE %s ADD CONSTRAINT %s_unique UNIQUE (%s)', reloid::text, const.pkey, const.pkey);
|
sql := Format('ALTER TABLE %s ADD CONSTRAINT %s_pk PRIMARY KEY (%s)', reloid::text, const.pkey, const.pkey);
|
||||||
RAISE DEBUG 'CDB(_CDB_Has_Usable_Primary_ID): %', sql;
|
RAISE DEBUG 'CDB(_CDB_Has_Usable_Primary_ID): %', sql;
|
||||||
EXECUTE sql;
|
EXECUTE sql;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
-- Failed unique check...
|
-- Failed unique check...
|
||||||
WHEN unique_violation THEN
|
WHEN unique_violation THEN
|
||||||
RAISE NOTICE 'CDB(_CDB_Has_Usable_Primary_ID): %', Format('column %s is not unique', const.pkey);
|
RAISE DEBUG 'CDB(_CDB_Has_Usable_Primary_ID): %', Format('column %s is not unique', const.pkey);
|
||||||
|
useable_key := false;
|
||||||
|
-- Failed not null check...
|
||||||
|
WHEN not_null_violation THEN
|
||||||
|
RAISE DEBUG 'CDB(_CDB_Has_Usable_Primary_ID): %', Format('column %s contains nulls', const.pkey);
|
||||||
useable_key := false;
|
useable_key := false;
|
||||||
-- Other fatal error
|
-- Other fatal error
|
||||||
WHEN others THEN
|
WHEN others THEN
|
||||||
@ -574,7 +578,7 @@ BEGIN
|
|||||||
|
|
||||||
-- Clean up test constraint
|
-- Clean up test constraint
|
||||||
IF useable_key THEN
|
IF useable_key THEN
|
||||||
PERFORM _CDB_SQL(Format('ALTER TABLE %s DROP CONSTRAINT %s_unique', reloid::text, const.pkey));
|
PERFORM _CDB_SQL(Format('ALTER TABLE %s DROP CONSTRAINT %s_pk', reloid::text, const.pkey));
|
||||||
|
|
||||||
-- Move non-unique column out of the way
|
-- Move non-unique column out of the way
|
||||||
ELSE
|
ELSE
|
||||||
|
@ -250,7 +250,7 @@ INSERT INTO existing_cartodb_id (cartodb_id, description) VALUES
|
|||||||
(20, 'b'),
|
(20, 'b'),
|
||||||
(30, 'c');
|
(30, 'c');
|
||||||
SELECT CDB_CartodbfyTableCheck('existing_cartodb_id', 'Existing cartodb_id values are respected #138');
|
SELECT CDB_CartodbfyTableCheck('existing_cartodb_id', 'Existing cartodb_id values are respected #138');
|
||||||
SELECT * from existing_cartodb_id;
|
SELECT cartodb_id,the_geom,the_geom_webmercator,description,name from existing_cartodb_id;
|
||||||
DROP TABLE existing_cartodb_id;
|
DROP TABLE existing_cartodb_id;
|
||||||
|
|
||||||
-- Table with both the_geom and wkb_geometry
|
-- Table with both the_geom and wkb_geometry
|
||||||
@ -281,6 +281,44 @@ INSERT INTO many_colliding_columns VALUES (
|
|||||||
SELECT CDB_CartodbfyTableCheck('many_colliding_columns', 'Many colliding columns #141');
|
SELECT CDB_CartodbfyTableCheck('many_colliding_columns', 'Many colliding columns #141');
|
||||||
DROP TABLE many_colliding_columns;
|
DROP TABLE many_colliding_columns;
|
||||||
|
|
||||||
|
-- Table with null cartodb_id
|
||||||
|
CREATE TABLE test (
|
||||||
|
cartodb_id integer
|
||||||
|
);
|
||||||
|
INSERT INTO test VALUES
|
||||||
|
(1),
|
||||||
|
(2),
|
||||||
|
(NULL),
|
||||||
|
(3);
|
||||||
|
SELECT CDB_CartodbfyTableCheck('test', 'Table with null cartodb_id #148');
|
||||||
|
SELECT cartodb_id, cartodb_id_1 from test;
|
||||||
|
DROP TABLE test;
|
||||||
|
|
||||||
|
-- Table with non unique cartodb_id
|
||||||
|
CREATE TABLE test (
|
||||||
|
cartodb_id integer
|
||||||
|
);
|
||||||
|
INSERT INTO test VALUES
|
||||||
|
(1),
|
||||||
|
(2),
|
||||||
|
(2);
|
||||||
|
SELECT CDB_CartodbfyTableCheck('test', 'Table with non unique cartodb_id #148');
|
||||||
|
SELECT cartodb_id, cartodb_id_1 from test;
|
||||||
|
DROP TABLE test;
|
||||||
|
|
||||||
|
-- Table with non unique and null cartodb_id
|
||||||
|
CREATE TABLE test (
|
||||||
|
cartodb_id integer
|
||||||
|
);
|
||||||
|
INSERT INTO test VALUES
|
||||||
|
(1),
|
||||||
|
(2),
|
||||||
|
(NULL),
|
||||||
|
(2);
|
||||||
|
SELECT CDB_CartodbfyTableCheck('test', 'Table with non unique and null cartodb_id #148');
|
||||||
|
SELECT cartodb_id, cartodb_id_1 from test;
|
||||||
|
DROP TABLE test;
|
||||||
|
|
||||||
|
|
||||||
-- TODO: table with existing custom-triggered the_geom
|
-- TODO: table with existing custom-triggered the_geom
|
||||||
|
|
||||||
|
@ -79,5 +79,28 @@ CREATE TABLE
|
|||||||
INSERT 0 1
|
INSERT 0 1
|
||||||
Many colliding columns #141 cartodbfied fine
|
Many colliding columns #141 cartodbfied fine
|
||||||
DROP TABLE
|
DROP TABLE
|
||||||
|
CREATE TABLE
|
||||||
|
INSERT 0 4
|
||||||
|
Table with null cartodb_id #148 cartodbfied fine
|
||||||
|
1|1
|
||||||
|
2|2
|
||||||
|
3|
|
||||||
|
4|3
|
||||||
|
DROP TABLE
|
||||||
|
CREATE TABLE
|
||||||
|
INSERT 0 3
|
||||||
|
Table with non unique cartodb_id #148 cartodbfied fine
|
||||||
|
1|1
|
||||||
|
2|2
|
||||||
|
3|2
|
||||||
|
DROP TABLE
|
||||||
|
CREATE TABLE
|
||||||
|
INSERT 0 4
|
||||||
|
Table with non unique and null cartodb_id #148 cartodbfied fine
|
||||||
|
1|1
|
||||||
|
2|2
|
||||||
|
3|
|
||||||
|
4|2
|
||||||
|
DROP TABLE
|
||||||
DROP FUNCTION
|
DROP FUNCTION
|
||||||
DROP FUNCTION
|
DROP FUNCTION
|
||||||
|
Loading…
Reference in New Issue
Block a user