diff --git a/test/acceptance/multilayer_server.js b/test/acceptance/multilayer_server.js index 7cf715dc..13563abb 100644 --- a/test/acceptance/multilayer_server.js +++ b/test/acceptance/multilayer_server.js @@ -256,6 +256,41 @@ describe('tests from old api translated to multilayer', function() { ); }); + // https://github.com/CartoDB/cartodb-postgresql/issues/86 + it.skip("should not fail with long table names because table name length limit", function(done) { + var tableName = 'long_table_name_with_enough_chars_to_break_querytables_function'; + var expectedCacheChannel = _.template('<%= databaseName %>:public.<%= tableName %>', { + databaseName: _.template(global.environment.postgres_auth_user, {user_id:1}) + '_db', + tableName: tableName + }); + + var layergroup = singleLayergroupConfig('select * from ' + tableName, '#layer { marker-fill: red; }'); + + assert.response(server, + { + url: layergroupUrl + '?config=' + encodeURIComponent(JSON.stringify(layergroup)), + method: 'GET', + headers: { + host: 'localhost' + } + }, + { + status: 200 + }, + function(res) { + var parsed = JSON.parse(res.body); + assert.ok(parsed.layergroupid); + + assert.ok(res.headers.hasOwnProperty('x-cache-channel')); + assert.equal(res.headers['x-cache-channel'], expectedCacheChannel); + + assert.equal(res.headers['x-layergroup-id'], parsed.layergroupid); + + done(); + } + ); + }); + it("creates layergroup fails when postgresql queries fail to figure affected tables in query", function(done) { var runQueryFn = PgQueryRunner.prototype.run; diff --git a/test/support/sql/windshaft.test.sql b/test/support/sql/windshaft.test.sql index e174d6b4..f76c433c 100644 --- a/test/support/sql/windshaft.test.sql +++ b/test/support/sql/windshaft.test.sql @@ -189,3 +189,31 @@ INSERT INTO CDB_TableMetadata (tabname, updated_at) VALUES ('test_table_private_ -- GRANT SELECT ON CDB_TableMetadata TO :PUBLICUSER; GRANT SELECT ON CDB_TableMetadata TO :TESTUSER; + +-- long name table +CREATE TABLE +long_table_name_with_enough_chars_to_break_querytables_function +( + updated_at timestamp without time zone DEFAULT now(), + created_at timestamp without time zone DEFAULT now(), + cartodb_id integer NOT NULL, + name character varying, + address character varying, + the_geom geometry, + the_geom_webmercator geometry +); + +INSERT INTO long_table_name_with_enough_chars_to_break_querytables_function SELECT * from test_table; + +ALTER TABLE ONLY long_table_name_with_enough_chars_to_break_querytables_function + ADD CONSTRAINT long_table_name_with_enough_chars_to_break_querytables_func_pkey PRIMARY KEY (cartodb_id); + +CREATE INDEX long_table_name_the_geom_idx + ON long_table_name_with_enough_chars_to_break_querytables_function USING gist (the_geom); +CREATE INDEX long_table_name_the_geom_webmercator_idx + ON long_table_name_with_enough_chars_to_break_querytables_function USING gist (the_geom_webmercator); + +GRANT ALL ON TABLE long_table_name_with_enough_chars_to_break_querytables_function TO :TESTUSER; +GRANT SELECT ON TABLE long_table_name_with_enough_chars_to_break_querytables_function TO :PUBLICUSER; + +INSERT INTO CDB_TableMetadata (tabname, updated_at) VALUES ('long_table_name_with_enough_chars_to_break_querytables_function'::regclass, '2009-02-13T23:31:30.123Z');