def __init__(self, strDbms): DdlCommonInterface.__init__(self, strDbms) self.params['max_id_len'] = { 'default' : 256 } self.params['table_desc'] = ["UPDATE RDB$RELATIONS SET RDB$DESCRIPTION = %(desc)s\n\tWHERE RDB$RELATION_NAME = upper('%(table)s')"] self.params['column_desc'] = ["UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = %(desc)s\n\tWHERE RDB$RELATION_NAME = upper('%(table)s') AND RDB$FIELD_NAME = upper('%(column)s')"] self.params['drop_constraints_on_col_rename'] = True self.params['drop_table_has_cascade'] = False self.params['alter_default'] = ['ALTER TABLE %(table_name)s ALTER %(column_name)s TYPE %(column_type)s'] self.params['rename_column'] = ['ALTER TABLE %(table_name)s ALTER %(old_col_name)s TO %(new_col_name)s'] self.params['alter_default'] = ['ALTER TABLE %(table_name)s ALTER COLUMN %(column_name)s SET DEFAULT %(new_default)s'] self.params['keywords'] = """ ACTION ACTIVE ADD ADMIN AFTER ALL ALTER AND ANY AS ASC ASCENDING AT AUTO AUTODDL AVG BASED BASENAME BASE_NAME BEFORE BEGIN BETWEEN BLOB BLOBEDIT BUFFER BY CACHE CASCADE CAST CHAR CHARACTER CHARACTER_LENGTH CHAR_LENGTH CHECK CHECK_POINT_LEN CHECK_POINT_LENGTH COLLATE COLLATION COLUMN COMMIT COMMITTED COMPILETIME COMPUTED CLOSE CONDITIONAL CONNECT CONSTRAINT CONTAINING CONTINUE COUNT CREATE CSTRING CURRENT CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURSOR DATABASE DATE DAY DB_KEY DEBUG DEC DECIMAL DECLARE DEFAULT DELETE DESC DESCENDING DESCRIBE DESCRIPTOR DISCONNECT DISPLAY DISTINCT DO DOMAIN DOUBLE DROP ECHO EDIT ELSE END ENTRY_POINT ESCAPE EVENT EXCEPTION EXECUTE EXISTS EXIT EXTERN EXTERNAL EXTRACT FETCH FILE FILTER FLOAT FOR FOREIGN FOUND FREE_IT FROM FULL FUNCTION GDSCODE GENERATOR GEN_ID GLOBAL GOTO GRANT GROUP GROUP_COMMIT_WAIT GROUP_COMMIT_ WAIT_TIME HAVING HELP HOUR IF IMMEDIATE IN INACTIVE INDEX INDICATOR INIT INNER INPUT INPUT_TYPE INSERT INT INTEGER INTO IS ISOLATION ISQL JOIN KEY LC_MESSAGES LC_TYPE LEFT LENGTH LEV LEVEL LIKE LOGFILE LOG_BUFFER_SIZE LOG_BUF_SIZE LONG MANUAL MAX MAXIMUM MAXIMUM_SEGMENT MAX_SEGMENT MERGE MESSAGE MIN MINIMUM MINUTE MODULE_NAME MONTH NAMES NATIONAL NATURAL NCHAR NO NOAUTO NOT NULL NUMERIC NUM_LOG_BUFS NUM_LOG_BUFFERS OCTET_LENGTH OF ON ONLY OPEN OPTION OR ORDER OUTER OUTPUT OUTPUT_TYPE OVERFLOW PAGE PAGELENGTH PAGES PAGE_SIZE PARAMETER PASSWORD PLAN POSITION POST_EVENT PRECISION PREPARE PROCEDURE PROTECTED PRIMARY PRIVILEGES PUBLIC QUIT RAW_PARTITIONS RDB$DB_KEY READ REAL RECORD_VERSION REFERENCES RELEASE RESERV RESERVING RESTRICT RETAIN RETURN RETURNING_VALUES RETURNS REVOKE RIGHT ROLE ROLLBACK RUNTIME SCHEMA SECOND SEGMENT SELECT SET SHADOW SHARED SHELL SHOW SINGULAR SIZE SMALLINT SNAPSHOT SOME SORT SQLCODE SQLERROR SQLWARNING STABILITY STARTING STARTS STATEMENT STATIC STATISTICS SUB_TYPE SUM SUSPEND TABLE TERMINATOR THEN TIME TIMESTAMP TO TRANSACTION TRANSLATE TRANSLATION TRIGGER TRIM TYPE UNCOMMITTED UNION UNIQUE UPDATE UPPER USER USING VALUE VALUES VARCHAR VARIABLE VARYING VERSION VIEW WAIT WEEKDAY WHEN WHENEVER WHERE WHILE WITH WORK WRITE YEAR YEARDAY""".split()
def __init__(self): DdlCommonInterface.__init__(self, 'mysql') self.params['max_id_len'] = { 'default' : 64 } self.params['quote_l'] = '`' self.params['quote_r'] = '`' self.params['table_desc'] = ["ALTER TABLE %(table)s COMMENT %(desc)s"] self.params['change_col_type'] = ['ALTER TABLE %(table_name)s MODIFY %(column_name)s %(column_type)s'] self.params['column_desc'] = ["ALTER TABLE %(table)s MODIFY %(column)s %(type)sCOMMENT %(desc)s"] self.params['has_auto_increment'] = True self.params['can_change_table_comment'] = False self.params['add_key_constraint'] = ['ALTER TABLE %(table_name)s ADD PRIMARY KEY (%(keys)s)'] self.params['drop_index'] = ['DROP INDEX %(index_name)s ON %(table_name)s'] self.params['drop_default'] = ['ALTER TABLE %(table_name)s MODIFY %(column_name)s %(column_type)s'] self.params['rename_column'] = ['ALTER TABLE %(table_name)s CHANGE %(old_col_name)s %(new_col_name)s %(column_type)s'] self.params['keywords'] = """ ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE AUTO_INCREMENT BDB BEFORE BERKELEYDB BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHARACTER CHECK COLLATE COLUMN COLUMNS CONDITION CONNECTION CONSTRAINT CONTINUE CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURSOR DATABASE DATABASES DAY_HOUR DAY_MICROSECOND DAY_MINUTE DAY_SECOND DEC DECIMAL DECLARE DEFAULT DELAYED DELETE DESC DESCRIBE DETERMINISTIC DISTINCT DISTINCTROW DIV DOUBLE DROP ELSE ELSEIF ENCLOSED ESCAPED EXISTS EXIT EXPLAIN FALSE FETCH FIELDS FLOAT FOR FORCE FOREIGN FOUND FRAC_SECOND FROM FULLTEXT GRANT GROUP HAVING HIGH_PRIORITY HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND IF IGNORE IN INDEX INFILE INNER INNODB INOUT INSENSITIVE INSERT INT INTEGER INTERVAL INTO IO_THREAD IS ITERATE JOIN KEY KEYS KILL LEADING LEAVE LEFT LIKE LIMIT LINES LOAD LOCALTIME LOCALTIMESTAMP LOCK LONG LONGBLOB LONGTEXT LOOP LOW_PRIORITY MASTER_SERVER_ID MATCH MEDIUMBLOB MEDIUMINT MEDIUMTEXT MIDDLEINT MINUTE_MICROSECOND MINUTE_SECOND MOD NATURAL NOT NO_WRITE_TO_BINLOG NULL NUMERIC ON OPTIMIZE OPTION OPTIONALLY OR ORDER OUT OUTER OUTFILE PRECISION PRIMARY PRIVILEGES PROCEDURE PURGE READ REAL REFERENCES REGEXP RENAME REPEAT REPLACE REQUIRE RESTRICT RETURN REVOKE RIGHT RLIKE SECOND_MICROSECOND SELECT SENSITIVE SEPARATOR SET SHOW SMALLINT SOME SONAME SPATIAL SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SQL_TSI_DAY SQL_TSI_FRAC_SECOND SQL_TSI_HOUR SQL_TSI_MINUTE SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_SECOND SQL_TSI_WEEK SQL_TSI_YEAR SSL STARTING STRAIGHT_JOIN STRIPED TABLE TABLES TERMINATED THEN TIMESTAMPADD TIMESTAMPDIFF TINYBLOB TINYINT TINYTEXT TO TRAILING TRUE UNDO UNION UNIQUE UNLOCK UNSIGNED UPDATE USAGE USE USER_RESOURCES USING UTC_DATE UTC_TIME UTC_TIMESTAMP VALUES VARBINARY VARCHAR VARCHARACTER VARYING WHEN WHERE WHILE WITH WRITE XOR YEAR_MONTH ZEROFILL""".split()
def __init__(self): DdlCommonInterface.__init__(self, 'mysql') self.params['max_id_len'] = {'default': 64} self.params['quote_l'] = '`' self.params['quote_r'] = '`' self.params['table_desc'] = ["ALTER TABLE %(table)s COMMENT %(desc)s"] self.params['change_col_type'] = [ 'ALTER TABLE %(table_name)s MODIFY %(column_name)s %(column_type)s' ] self.params['column_desc'] = [ "ALTER TABLE %(table)s MODIFY %(column)s %(type)sCOMMENT %(desc)s" ] self.params['has_auto_increment'] = True self.params['can_change_table_comment'] = False self.params['add_key_constraint'] = [ 'ALTER TABLE %(table_name)s ADD PRIMARY KEY (%(keys)s)' ] self.params['drop_index'] = [ 'DROP INDEX %(index_name)s ON %(table_name)s' ] self.params['drop_default'] = [ 'ALTER TABLE %(table_name)s MODIFY %(column_name)s %(column_type)s' ] self.params['rename_column'] = [ 'ALTER TABLE %(table_name)s CHANGE %(old_col_name)s %(new_col_name)s %(column_type)s' ] self.params['keywords'] = """ ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE AUTO_INCREMENT BDB BEFORE BERKELEYDB BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE CASE CHANGE CHAR CHARACTER CHECK COLLATE COLUMN COLUMNS CONDITION CONNECTION CONSTRAINT CONTINUE CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURSOR DATABASE DATABASES DAY_HOUR DAY_MICROSECOND DAY_MINUTE DAY_SECOND DEC DECIMAL DECLARE DEFAULT DELAYED DELETE DESC DESCRIBE DETERMINISTIC DISTINCT DISTINCTROW DIV DOUBLE DROP ELSE ELSEIF ENCLOSED ESCAPED EXISTS EXIT EXPLAIN FALSE FETCH FIELDS FLOAT FOR FORCE FOREIGN FOUND FRAC_SECOND FROM FULLTEXT GRANT GROUP HAVING HIGH_PRIORITY HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND IF IGNORE IN INDEX INFILE INNER INNODB INOUT INSENSITIVE INSERT INT INTEGER INTERVAL INTO IO_THREAD IS ITERATE JOIN KEY KEYS KILL LEADING LEAVE LEFT LIKE LIMIT LINES LOAD LOCALTIME LOCALTIMESTAMP LOCK LONG LONGBLOB LONGTEXT LOOP LOW_PRIORITY MASTER_SERVER_ID MATCH MEDIUMBLOB MEDIUMINT MEDIUMTEXT MIDDLEINT MINUTE_MICROSECOND MINUTE_SECOND MOD NATURAL NOT NO_WRITE_TO_BINLOG NULL NUMERIC ON OPTIMIZE OPTION OPTIONALLY OR ORDER OUT OUTER OUTFILE PRECISION PRIMARY PRIVILEGES PROCEDURE PURGE READ REAL REFERENCES REGEXP RENAME REPEAT REPLACE REQUIRE RESTRICT RETURN REVOKE RIGHT RLIKE SECOND_MICROSECOND SELECT SENSITIVE SEPARATOR SET SHOW SMALLINT SOME SONAME SPATIAL SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SQL_TSI_DAY SQL_TSI_FRAC_SECOND SQL_TSI_HOUR SQL_TSI_MINUTE SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_SECOND SQL_TSI_WEEK SQL_TSI_YEAR SSL STARTING STRAIGHT_JOIN STRIPED TABLE TABLES TERMINATED THEN TIMESTAMPADD TIMESTAMPDIFF TINYBLOB TINYINT TINYTEXT TO TRAILING TRUE UNDO UNION UNIQUE UNLOCK UNSIGNED UPDATE USAGE USE USER_RESOURCES USING UTC_DATE UTC_TIME UTC_TIMESTAMP VALUES VARBINARY VARCHAR VARCHARACTER VARYING WHEN WHERE WHILE WITH WRITE XOR YEAR_MONTH ZEROFILL""".split()
def __init__(self): DdlCommonInterface.__init__(self, 'firebird') self.params['max_id_len'] = {'default': 256} self.params['table_desc'] = [ "UPDATE RDB$RELATIONS SET RDB$DESCRIPTION = %(desc)s\n\tWHERE RDB$RELATION_NAME = upper('%(table)s')" ] self.params['column_desc'] = [ "UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = %(desc)s\n\tWHERE RDB$RELATION_NAME = upper('%(table)s') AND RDB$FIELD_NAME = upper('%(column)s')" ] self.params['drop_constraints_on_col_rename'] = True self.params['drop_table_has_cascade'] = False self.params['alter_default'] = [ 'ALTER TABLE %(table_name)s ALTER %(column_name)s TYPE %(column_type)s' ] self.params['rename_column'] = [ 'ALTER TABLE %(table_name)s ALTER %(old_col_name)s TO %(new_col_name)s' ] self.params['alter_default'] = [ 'ALTER TABLE %(table_name)s ALTER COLUMN %(column_name)s SET DEFAULT %(new_default)s' ] self.params['keywords'] = """ ACTION ACTIVE ADD ADMIN AFTER ALL ALTER AND ANY AS ASC ASCENDING AT AUTO AUTODDL AVG BASED BASENAME BASE_NAME BEFORE BEGIN BETWEEN BLOB BLOBEDIT BUFFER BY CACHE CASCADE CAST CHAR CHARACTER CHARACTER_LENGTH CHAR_LENGTH CHECK CHECK_POINT_LEN CHECK_POINT_LENGTH COLLATE COLLATION COLUMN COMMIT COMMITTED COMPILETIME COMPUTED CLOSE CONDITIONAL CONNECT CONSTRAINT CONTAINING CONTINUE COUNT CREATE CSTRING CURRENT CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURSOR DATABASE DATE DAY DB_KEY DEBUG DEC DECIMAL DECLARE DEFAULT DELETE DESC DESCENDING DESCRIBE DESCRIPTOR DISCONNECT DISPLAY DISTINCT DO DOMAIN DOUBLE DROP ECHO EDIT ELSE END ENTRY_POINT ESCAPE EVENT EXCEPTION EXECUTE EXISTS EXIT EXTERN EXTERNAL EXTRACT FETCH FILE FILTER FLOAT FOR FOREIGN FOUND FREE_IT FROM FULL FUNCTION GDSCODE GENERATOR GEN_ID GLOBAL GOTO GRANT GROUP GROUP_COMMIT_WAIT GROUP_COMMIT_ WAIT_TIME HAVING HELP HOUR IF IMMEDIATE IN INACTIVE INDEX INDICATOR INIT INNER INPUT INPUT_TYPE INSERT INT INTEGER INTO IS ISOLATION ISQL JOIN KEY LC_MESSAGES LC_TYPE LEFT LENGTH LEV LEVEL LIKE LOGFILE LOG_BUFFER_SIZE LOG_BUF_SIZE LONG MANUAL MAX MAXIMUM MAXIMUM_SEGMENT MAX_SEGMENT MERGE MESSAGE MIN MINIMUM MINUTE MODULE_NAME MONTH NAMES NATIONAL NATURAL NCHAR NO NOAUTO NOT NULL NUMERIC NUM_LOG_BUFS NUM_LOG_BUFFERS OCTET_LENGTH OF ON ONLY OPEN OPTION OR ORDER OUTER OUTPUT OUTPUT_TYPE OVERFLOW PAGE PAGELENGTH PAGES PAGE_SIZE PARAMETER PASSWORD PLAN POSITION POST_EVENT PRECISION PREPARE PROCEDURE PROTECTED PRIMARY PRIVILEGES PUBLIC QUIT RAW_PARTITIONS RDB$DB_KEY READ REAL RECORD_VERSION REFERENCES RELEASE RESERV RESERVING RESTRICT RETAIN RETURN RETURNING_VALUES RETURNS REVOKE RIGHT ROLE ROLLBACK RUNTIME SCHEMA SECOND SEGMENT SELECT SET SHADOW SHARED SHELL SHOW SINGULAR SIZE SMALLINT SNAPSHOT SOME SORT SQLCODE SQLERROR SQLWARNING STABILITY STARTING STARTS STATEMENT STATIC STATISTICS SUB_TYPE SUM SUSPEND TABLE TERMINATOR THEN TIME TIMESTAMP TO TRANSACTION TRANSLATE TRANSLATION TRIGGER TRIM TYPE UNCOMMITTED UNION UNIQUE UPDATE UPPER USER USING VALUE VALUES VARCHAR VARIABLE VARYING VERSION VIEW WAIT WEEKDAY WHEN WHENEVER WHERE WHILE WITH WORK WRITE YEAR YEARDAY""".split( )
def __init__(self, strDbms): DdlCommonInterface.__init__(self, strDbms) self.params['max_id_len'] = { 'default' : 63 } if self.dbmsType == 'postgres7': self.params['change_col_type'] = [ 'ALTER TABLE %(table_name)s ADD tmp_%(column_name)s %(column_type)s', 'UPDATE %(table_name)s SET tmp_%(column_name)s = %(column_name)s', 'ALTER TABLE %(table_name)s DROP %(column_name)s', 'ALTER TABLE %(table_name)s RENAME tmp_%(column_name)s TO %(column_name)s', ] self.params['keywords'] = """ ALL AND ANY AS ASC AUTHORIZATION BETWEEN BINARY BOTH CASE CAST CHECK COLLATE COLUMN CONSTRAINT CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER DEFAULT DEFERRABLE DESC DISTINCT ELSE END EXCEPT FALSE FOR FOREIGN FREEZE FROM FULL GRANT GROUP HAVING ILIKE IN INITIALLY INNER INTERSECT INTO IS ISNULL JOIN LEADING LEFT LIKE LIMIT LOCALTIME LOCALTIMESTAMP NATURAL NEW NOT NOTNULL NULL OFF OLD ON ONLY OR ORDER OUTER OVERLAPS PRIMARY REFERENCES RIGHT SELECT SESSION_USER SIMILAR SOME TABLE THEN TO TRAILING TRUE UNION UNIQUE USER USING VERBOSE WHEN WHERE""".split()
def __init__(self, strDbms): DdlCommonInterface.__init__(self, strDbms) self.params['max_id_len'] = {'default': 63} if self.dbmsType == 'postgres7': self.params['change_col_type'] = [ 'ALTER TABLE %(table_name)s ADD tmp_%(column_name)s %(column_type)s', 'UPDATE %(table_name)s SET tmp_%(column_name)s = %(column_name)s', 'ALTER TABLE %(table_name)s DROP %(column_name)s', 'ALTER TABLE %(table_name)s RENAME tmp_%(column_name)s TO %(column_name)s', ] self.params['keywords'] = """ ALL AND ANY AS ASC AUTHORIZATION BETWEEN BINARY BOTH CASE CAST CHECK COLLATE COLUMN CONSTRAINT CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER DEFAULT DEFERRABLE DESC DISTINCT ELSE END EXCEPT FALSE FOR FOREIGN FREEZE FROM FULL GRANT GROUP HAVING ILIKE IN INITIALLY INNER INTERSECT INTO IS ISNULL JOIN LEADING LEFT LIKE LIMIT LOCALTIME LOCALTIMESTAMP NATURAL NEW NOT NOTNULL NULL OFF OLD ON ONLY OR ORDER OUTER OVERLAPS PRIMARY REFERENCES RIGHT SELECT SESSION_USER SIMILAR SOME TABLE THEN TO TRAILING TRUE UNION UNIQUE USER USING VERBOSE WHEN WHERE""".split( )
def __init__(self, strDbms): DdlCommonInterface.__init__(self, strDbms) self.params['max_id_len'] = { 'default' : 63 } self.params['alter_default'] = ['ALTER TABLE %(table_name)s MODIFY %(column_name)s %(column_type)s'] self.params['drop_default'] = ['ALTER TABLE %(table_name)s ALTER %(column_name)s %(column_type)s'] self.params['rename_column'] = ['ALTER TABLE %(table_name)s RENAME COLUMN %(old_col_name)s TO %(new_col_name)s'] self.params['change_col_type'] = ['ALTER TABLE %(table_name)s MODIFY %(column_name)s %(column_type)s'] self.params['drop_column'] = ['ALTER TABLE %(table_name)s DROP COLUMN %(column_name)s'] self.params['add_relation'] = ['ALTER TABLE %(tablename)s ADD CONSTRAINT %(constraint)s FOREIGN KEY (%(thiscolumn)s) REFERENCES %(othertable)s(%(fk)s)%(ondelete)s'] self.params['create_view'] = ['CREATE VIEW %(viewname)s AS %(contents)s'] self.params['create_function'] = ["CREATE FUNCTION %(functionname)s(%(arguments)s) RETURN %(returns)s AS\n%(contents)s;"] self.params['drop_function'] = ['DROP FUNCTION %(functionname)s'] self.params['keywords'] = """AS ASC AUDIT ACCESS BY ADD ALL ALTER CHAR AND ANY CHECK DATE CLUSTER COLUMN COMMENT DECIMAL DEFAULT COMPRESS DELETE CONNECT DESC DISTINCT DROP CREATE CURRENT ELSE CURSOR GRANT GROUP EXCLUSIVE EXISTS HAVING IDENTIFIED IMMEDIATE IN FILE INCREMENT INDEX FLOAT FOR INITIAL INSERT FROM INTEGER INTERSECT INTO IS MINUS MLSLABEL LEVEL LIKE MODE MODIFY LOCK LONG NOAUDIT NOCOMPRESS MAXEXTENTS NOT NOTFOUND NOWAIT NULL NUMBER PCTFREE OF OFFLINE ON ONLINE PRIOR PRIVILEGES OPTION OR PUBLIC ORDER RAW SELECT RENAME SESSION SET SHARE RESOURCE SIZE REVOKE SMALLINT ROW ROWID ROWLABEL ROWNUM SQLBUF ROWS START UID SUCCESSFUL UNION UNIQUE SYNONYM SYSDATE TABLE UPDATE USER THEN VALIDATE VALIDATION VALUE VALUES TO VARCHAR VARCHAR2 VIEW TRIGGER WHENEVER WHERE WITH""".split()
def __init__(self, strDbms): DdlCommonInterface.__init__(self, strDbms) self.params['max_id_len'] = {'default': 63} self.params['alter_default'] = [ 'ALTER TABLE %(table_name)s MODIFY %(column_name)s %(column_type)s' ] self.params['drop_default'] = [ 'ALTER TABLE %(table_name)s ALTER %(column_name)s %(column_type)s' ] self.params['rename_column'] = [ 'ALTER TABLE %(table_name)s RENAME COLUMN %(old_col_name)s TO %(new_col_name)s' ] self.params['change_col_type'] = [ 'ALTER TABLE %(table_name)s MODIFY %(column_name)s %(column_type)s' ] self.params['drop_column'] = [ 'ALTER TABLE %(table_name)s DROP COLUMN %(column_name)s' ] self.params['add_relation'] = [ 'ALTER TABLE %(tablename)s ADD CONSTRAINT %(constraint)s FOREIGN KEY (%(thiscolumn)s) REFERENCES %(othertable)s(%(fk)s)%(ondelete)s' ] self.params['create_view'] = [ 'CREATE VIEW %(viewname)s AS %(contents)s' ] self.params['create_function'] = [ "CREATE FUNCTION %(functionname)s(%(arguments)s) RETURN %(returns)s AS\n%(contents)s;" ] self.params['drop_function'] = ['DROP FUNCTION %(functionname)s'] self.params[ 'keywords'] = """AS ASC AUDIT ACCESS BY ADD ALL ALTER CHAR AND ANY CHECK DATE CLUSTER COLUMN COMMENT DECIMAL DEFAULT COMPRESS DELETE CONNECT DESC DISTINCT DROP CREATE CURRENT ELSE CURSOR GRANT GROUP EXCLUSIVE EXISTS HAVING IDENTIFIED IMMEDIATE IN FILE INCREMENT INDEX FLOAT FOR INITIAL INSERT FROM INTEGER INTERSECT INTO IS MINUS MLSLABEL LEVEL LIKE MODE MODIFY LOCK LONG NOAUDIT NOCOMPRESS MAXEXTENTS NOT NOTFOUND NOWAIT NULL NUMBER PCTFREE OF OFFLINE ON ONLINE PRIOR PRIVILEGES OPTION OR PUBLIC ORDER RAW SELECT RENAME SESSION SET SHARE RESOURCE SIZE REVOKE SMALLINT ROW ROWID ROWLABEL ROWNUM SQLBUF ROWS START UID SUCCESSFUL UNION UNIQUE SYNONYM SYSDATE TABLE UPDATE USER THEN VALIDATE VALIDATION VALUE VALUES TO VARCHAR VARCHAR2 VIEW TRIGGER WHENEVER WHERE WITH""".split( )