# rules for converting Informix SQL to Postgres-compatible syntax # # This one is used for the ODBC version engine.... # It may get merged with the INFORMIX-POSTGRES.cnv version.... # DOUBLE_TO_SINGLE_QUOTES MATCHES_TO_REGEX TABLE_ALIAS_AS ADD_CASCADE COLUMN_ALIAS_AS MONEY_AS_DECIMAL ANSI_UPDATE_SYNTAX CONSTRAINT_NAME_BEFORE SUBSTRING_FUNCTION = substr STRIP_ORDER_BY_INTO_TEMP TRIMSQLLIKEVAL # Postgres doesn't have one of these - so fake one DTYPE_ALIAS BYTE = VARCHAR # Postgres doesn't have one of these - so fake one DTYPE_ALIAS SMALLFLOAT = FLOAT DTYPE_ALIAS DATETIME DAY TO DAY=SMALLINT DTYPE_ALIAS DATETIME DAY TO FRACTION(2)=CHAR(14) DTYPE_ALIAS DATETIME DAY TO FRACTION=CHAR(14) DTYPE_ALIAS DATETIME DAY TO HOUR=CHAR(5) DTYPE_ALIAS DATETIME DAY TO MINUTE=CHAR(8) DTYPE_ALIAS DATETIME DAY TO SECOND=CHAR(11) DTYPE_ALIAS DATETIME HOUR TO FRACTION(2)=CHAR(11) DTYPE_ALIAS DATETIME HOUR TO FRACTION=CHAR(11) DTYPE_ALIAS DATETIME HOUR TO HOUR=SMALLINT DTYPE_ALIAS DATETIME HOUR TO MINUTE=CHAR(5) DTYPE_ALIAS DATETIME HOUR TO SECOND=CHAR(8) DTYPE_ALIAS DATETIME MINUTE TO FRACTION(1)=CHAR(7) DTYPE_ALIAS DATETIME MINUTE TO FRACTION=CHAR(8) DTYPE_ALIAS DATETIME MINUTE TO MINUTE=SMALLINT DTYPE_ALIAS DATETIME MINUTE TO SECOND=CHAR(5) DTYPE_ALIAS DATETIME MONTH TO DAY=CHAR(5) DTYPE_ALIAS DATETIME MONTH TO FRACTION(1)=CHAR(16) DTYPE_ALIAS DATETIME MONTH TO FRACTION=CHAR(17) DTYPE_ALIAS DATETIME MONTH TO HOUR=CHAR(8) DTYPE_ALIAS DATETIME MONTH TO MINUTE=CHAR(11) DTYPE_ALIAS DATETIME MONTH TO MONTH=SMALLINT DTYPE_ALIAS DATETIME MONTH TO SECOND=CHAR(14) DTYPE_ALIAS DATETIME SECOND TO FRACTION(2)=CHAR(4) DTYPE_ALIAS DATETIME SECOND TO FRACTION=CHAR(4) DTYPE_ALIAS DATETIME SECOND TO SECOND=SMALLINT DTYPE_ALIAS DATETIME YEAR TO DAY=CHAR(10) DTYPE_ALIAS DATETIME YEAR TO FRACTION(2)=CHAR(20) DTYPE_ALIAS DATETIME YEAR TO FRACTION(3)=CHAR(20) DTYPE_ALIAS DATETIME YEAR TO FRACTION(5)=CHAR(20) DTYPE_ALIAS DATETIME YEAR TO FRACTION=CHAR(20) DTYPE_ALIAS DATETIME YEAR TO HOUR=CHAR(13) DTYPE_ALIAS DATETIME YEAR TO MINUTE=CHAR(16) DTYPE_ALIAS DATETIME YEAR TO MONTH=CHAR(7) DTYPE_ALIAS DATETIME YEAR TO SECOND=CHAR(16) DTYPE_ALIAS DATETIME YEAR TO YEAR=SMALLINT DTYPE_ALIAS INTERVAL YEAR TO YEAR=CHAR(20) DTYPE_ALIAS INTERVAL YEAR (4) TO YEAR=CHAR(20) DTYPE_ALIAS INTERVAL YEAR TO MONTH=CHAR(20) DTYPE_ALIAS INTERVAL YEAR (4) TO MONTH=CHAR(20) DTYPE_ALIAS INTERVAL MONTH TO MONTH=CHAR(20) DTYPE_ALIAS INTERVAL MONTH (2) TO MONTH=CHAR(20) DTYPE_ALIAS INTERVAL DAY TO DAY=CHAR(20) DTYPE_ALIAS INTERVAL DAY (2) TO DAY=CHAR(20) DTYPE_ALIAS INTERVAL DAY TO HOUR=CHAR(20) DTYPE_ALIAS INTERVAL DAY (2) TO HOUR=CHAR(20) DTYPE_ALIAS INTERVAL DAY TO MINUTE=CHAR(20) DTYPE_ALIAS INTERVAL DAY (2) TO MINUTE=CHAR(20) DTYPE_ALIAS INTERVAL DAY TO SECOND=CHAR(20) DTYPE_ALIAS INTERVAL DAY (2) TO SECOND=CHAR(20) DTYPE_ALIAS INTERVAL DAY TO FRACTION=CHAR(20) DTYPE_ALIAS INTERVAL DAY (2) TO FRACTION=CHAR(20) DTYPE_ALIAS INTERVAL DAY TO FRACTION(2)=CHAR(20) DTYPE_ALIAS INTERVAL DAY (2) TO FRACTION(2)=CHAR(20) DTYPE_ALIAS INTERVAL HOUR TO HOUR=CHAR(20) DTYPE_ALIAS INTERVAL HOUR (2) TO HOUR=CHAR(20) DTYPE_ALIAS INTERVAL HOUR TO MINUTE=CHAR(20) DTYPE_ALIAS INTERVAL HOUR (2) TO MINUTE=CHAR(20) DTYPE_ALIAS INTERVAL HOUR TO SECOND=CHAR(20) DTYPE_ALIAS INTERVAL HOUR (2) TO SECOND=CHAR(20) DTYPE_ALIAS INTERVAL HOUR TO FRACTION=CHAR(20) DTYPE_ALIAS INTERVAL HOUR (2) TO FRACTION=CHAR(20) DTYPE_ALIAS INTERVAL HOUR TO FRACTION(2)=CHAR(20) DTYPE_ALIAS INTERVAL HOUR (2) TO FRACTION(2)=CHAR(20) DTYPE_ALIAS INTERVAL MINUTE TO MINUTE=CHAR(20) DTYPE_ALIAS INTERVAL MINUTE (2) TO MINUTE=CHAR(20) DTYPE_ALIAS INTERVAL MINUTE TO SECOND=CHAR(20) DTYPE_ALIAS INTERVAL MINUTE (2) TO SECOND=CHAR(20) DTYPE_ALIAS INTERVAL MINUTE TO FRACTION=CHAR(20) DTYPE_ALIAS INTERVAL MINUTE (2) TO FRACTION=CHAR(20) DTYPE_ALIAS INTERVAL MINUTE (2 ) TO FRACTION(1)=CHAR(20) DTYPE_ALIAS INTERVAL MINUTE (2) TO FRACTION(1)=CHAR(20) DTYPE_ALIAS INTERVAL SECOND TO SECOND=CHAR(20) DTYPE_ALIAS INTERVAL SECOND (2) TO SECOND=CHAR(20) DTYPE_ALIAS INTERVAL SECOND TO FRACTION=CHAR(20) DTYPE_ALIAS INTERVAL SECOND (2) TO FRACTION=CHAR(20) DTYPE_ALIAS INTERVAL SECOND TO FRACTION(2)=CHAR(20) DTYPE_ALIAS INTERVAL SECOND (2) TO FRACTION(2)=CHAR(20) DTYPE_ALIAS NVARCHAR = VARCHAR OMIT_NO_LOG USE_INDICATOR REPLACE_SQLCONST rowid = oid # These are only needed for non-patched postgres : REPLACE_SQLCONST today = date(now()) REPLACE_SQLFUNC year = date_part('YEAR',%s::timestamp with time zone) REPLACE_SQLFUNC month = date_part('MONTH',%s::timestamp with time zone) REPLACE_SQLFUNC day = date_part('DAY',%s::timestamp with time zone) REPLACE_SQLFUNC dow = date_part('DOW',%s::timestamp with time zone) REPLACE_SQLFUNC ascii = chr(%s) REPLACE_SQLFUNC ord = ascii(%s) REPLACE_SQLFUNC upshift=upper(%s) REPLACE_SQLFUNC downshift=lower(%s) REPLACE_EXPR current year to fraction(3) = now() REPLACE_EXPR current year to fraction(5) = now() REPLACE_EXPR current year to second = now() # No obvious replacement for these - so effectively remove them REPLACE_COMMAND SET EXPLAIN ON = REPLACE_COMMAND SET EXPLAIN OFF = # This is about as close as postgres gets to an update statistics... REPLACE_COMMAND UPDATE STATISTICS = VACUUM # We can only replace whole statements with a REPLACE_COMMAND # so we need to use a REPLACE on its own for this one.. REPLACE UPDATE STATISTICS FOR TABLE = VACUUM # Postgres doesn't implement these - so ignore them ? REPLACE_COMMAND SET ISOLATION TO DIRTY READ = REPLACE_COMMAND SET ISOLATION TO REPEATABLE READ = REPLACE_COMMAND SET ISOLATION TO CURSOR STABILITY = SET SESSION CHARACTERISTICS SERIALIZABLE REPLACE_COMMAND SET ISOLATION TO COMMITTED READ = SET SESSION CHARACTERISTICS READ COMMITTED REPLACE_COMMAND SET LOCK MODE TO NOT WAIT = REPLACE_COMMAND SET LOCK MODE TO WAIT = REPLACE_COMMAND SET LOCK MODE TO WAIT %s = REPLACE_COMMAND ALTER TABLE %s LOCK MODE (PAGE) = REPLACE_COMMAND ALTER TABLE %s LOCK MODE (ROW) = # Ignore any errors when closing a cursor # it may already have been closed... IGNORE_CLOSE_ERROR OMIT_INDEX_CLUSTER OMIT_INDEX_ORDER IGNORE_OWNER ESQL_UNLOAD_FULL_PATH ESQL_AFTER_INSERT = A4GLESQL_after_insert(); ESQL_AFTER_UPDATE = A4GLESQL_after_update(); ESQL_AFTER_DELETE = A4GLESQL_after_delete(); IGNORE_DTYPE_VARCHAR_MIN # Quote an SQL expression in the form DATETIME(2001-01-01) to be DATETIME("2001-01-01") (give the db a chance to handle with a SP) CHAR_TO_DATETIME = char_to_dt # Quote an SQL expression in the form DATETIME(2001-01-01) to be DATETIME("2001-01-01") (give the db a chance to handle with a SP) CHAR_TO_INTERVAL = char_to_iv DATETIME_EXTEND_FUNCTION = dt_extend INTERVAL_EXTEND_FUNCTION = iv_extend # Remove any columns for an GRANT UPDATE (...) ... SIMPLE_GRANT_UPDATE SIMPLE_GRANT_SELECT # Remove any (...) for serial (autoincrements) columns NO_SERIAL_START_VALUE RENAME_TABLE_AS_ALTER_TABLE RENAME_COLUMN_AS_ALTER_TABLE SELECT_INTO_TEMP_AS_CREATE_TEMP_AS SWAP_SQLCA62 OMIT_UPDATE_TABLE OMIT_INDEX_USING OMIT_INDEX_FILLFACTOR OMIT_INDEX_IN ADD_WITH_OIDS OUTER_JOINS_NB FORCE_HOLD_EXCEPT_UPDATE REMAP_ERROR -7=-206