diff --git a/test/support/prepare_db.sh b/test/support/prepare_db.sh index b4b6a1a5..26e4c0b9 100755 --- a/test/support/prepare_db.sh +++ b/test/support/prepare_db.sh @@ -78,8 +78,6 @@ if test x"$PREPARE_PGSQL" = xyes; then sed "s/:TESTPASS/${TESTPASS}/" | psql -v ON_ERROR_STOP=1 ${TEST_DB} || exit 1 - psql -c "CREATE LANGUAGE plpythonu;" ${TEST_DB} - curl -L -s https://github.com/CartoDB/cartodb-postgresql/raw/cdb/scripts-available/CDB_QueryStatements.sql -o sql/CDB_QueryStatements.sql curl -L -s https://github.com/CartoDB/cartodb-postgresql/raw/cdb/scripts-available/CDB_QueryTables.sql -o sql/CDB_QueryTables.sql cat sql/CDB_QueryStatements.sql sql/CDB_QueryTables.sql sql/CDB_Overviews.sql | psql -v ON_ERROR_STOP=1 ${TEST_DB} || exit 1 diff --git a/test/support/sql/CDB_QueryStatements.sql b/test/support/sql/CDB_QueryStatements.sql index bb4d10cf..824f38ad 100644 --- a/test/support/sql/CDB_QueryStatements.sql +++ b/test/support/sql/CDB_QueryStatements.sql @@ -1,14 +1,16 @@ +-- DUMMY IMPLEMENTATION +-- Ref: https://github.com/CartoDB/cartodb-postgresql/blob/master/scripts-available/CDB_QueryStatements.sql + -- Return an array of statements found in the given query text -- -- Regexp curtesy of Hubert Lubaczewski (depesz) -- Implemented in plpython for performance reasons -- -CREATE OR REPLACE FUNCTION CDB_QueryStatements(query text) +CREATE OR REPLACE FUNCTION CDB_QueryStatements(query text) RETURNS SETOF TEXT AS $$ - import re - pat = re.compile( r'''((?:[^'"$;]+|"[^"]*"|'[^']*'|(\$[^$]*\$).*?\2)+)''', re.DOTALL ) - for match in pat.findall(query): - cleaned = match[0].strip() - if ( cleaned ): - yield cleaned -$$ language 'plpythonu' IMMUTABLE STRICT; + with matches as ( + select regexp_matches($1, $regexp$((?:[^'"$;]+|"[^"]*"|'[^']*'|(\$[^$]*\$).*?\2)+)$regexp$, 'g') as m + ) + select btrim(m[1]) from matches +$$ +LANGUAGE SQL IMMUTABLE STRICT;