help_en: 'convert the conceptual model into a physical model for Oracle DB'
help_fr: 'convertit le modèle conceptuel en un modèle physique pour Oracle DB'
help_zh: '将概念模型转换为 Oracle DB 的物理模型'
fr_examples:
  - order: 1
    example: 'oracle'
    explanation: 'version de base'
  - order: 4
    example: 'oracle:b'
    explanation: 'avec _boilerplate_'
parent: 'sql'
stem_suffix: '_ddl_oracle'
transform_label:
  - order: 1100
    comment: 'Protect reserved keywords'
    search: '(?i)^(ACCESSIBLE|ALLOCATE|ANALYSE|ANALYZE|ARE|ARRAY|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|AUTHORIZATION|AUTOINCREMENT|AVG|BACKUP|BEFORE|BEGIN|BIGINT|BINARY|BIT|BLOB|BOOLEAN|BOTH|BREAK|BROWSE|BULK|CALL|CASCADE|CASCADED|CASE|CAST|CHANGE|CHARACTER|CHARACTER_LENGTH|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COMMIT|COMPUTE|CONCAT|CONCURRENTLY|CONDITION|CONNECTION|CONSTRAINT|CONSTRAINTS|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CORRESPONDING|COUNT|CROSS|CUBE|CUME_DIST|CURRENT_CATALOG|CURRENT_DATE|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DATABASES|DAY|DAYS|DAY_HOUR|DAY_MICROSECOND|DAY_MINUTE|DAY_SECOND|DBCC|DEALLOCATE|DEC|DECLARE|DEFERRABLE|DEFERRED|DEFINE|DEFINER|DELAYED|DENSE_RANK|DENY|DESCRIBE|DETERMINISTIC|DIAGNOSTICS|DISCONNECT|DISTINCTROW|DISTRIBUTED|DIV|DO|DOUBLE|DUAL|EACH|ELSEIF|EMPTY|ENCLOSED|END|ENUM|ERRLVL|ESCAPE|ESCAPED|EXCEPTION|EXCLUDE|EXEC|EXECUTE|EXIT|EXPLAIN|EXTERNAL|EXTRACT|FALSE|FETCH|FILLFACTOR|FILTER|FIRST|FIRST_VALUE|FLOAT4|FLOAT8|FOLLOWING|FORCE|FOREIGN|FOUND|FREETEXT|FREETEXTTABLE|FREEZE|FULL|FULLTEXT|FUNCTION|GENERATED|GET|GLOB|GLOBAL|GO|GOTO|GROUPING|GROUPS|HASH|HIGH_PRIORITY|HOLDLOCK|HOUR|HOURS|HOUR_MICROSECOND|HOUR_MINUTE|HOUR_SECOND|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|ILIKE|INDEXED|INDICATOR|INFILE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INT|INT1|INT2|INT3|INT4|INT8|INTERVAL|INVOKER|IO_AFTER_GTIDS|IO_BEFORE_GTIDS|ISNULL|ISOLATION|ITERATE|JOIN|JSON_ARRAYAGG|JSON_EXISTS|JSON_OBJECTAGG|JSON_TABLE|KEY|KEYS|KILL|LAG|LAST|LAST_VALUE|LATERAL|LEAD|LEADING|LEAVE|LEFT|LIMIT|LINEAR|LINENO|LINES|LOAD|LOCALTIME|LOCALTIMESTAMP|LONGBLOB|LONGTEXT|LOOP|LOWER|LOW_PRIORITY|LTRIM|MASTER_BIND|MASTER_SSL_VERIFY_SERVER_CERT|MATCH|MAX|MAXVALUE|MEDIUMBLOB|MEDIUMINT|MEDIUMTEXT|MEMBER|MERGE|MICROSECOND|MICROSECONDS|MIDDLEINT|MIN|MINUTE|MINUTES|MINUTE_MICROSECOND|MINUTE_SECOND|MOD|MODIFIES|MONTH|MONTHS|NATIONAL|NATURAL|NCHAR|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NOTHING|NOTNULL|NO_WRITE_TO_BINLOG|NTH_VALUE|NTILE|NULLIF|NULLS|NUMERIC|NVARCHAR|OFF|OFFSET|OFFSETS|ONLY|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTIMIZE|OPTIMIZER_COSTS|OPTIONALLY|OUT|OUTER|OUTFILE|OUTPUT|OVER|OVERLAPS|PAD|PARALLEL|PARTIAL|PARTITION|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLACING|PLAN|PORTION|POSITION|PRECEDING|PRECISION|PREPARE|PRESERVE|PRIMARY|PRINT|PRIVILEGES|PROC|PROCEDURE|PURGE|RAISE|RAISERROR|RANGE|RANK|READ|READS|READTEXT|READ_WRITE|REAL|RECONFIGURE|RECURSIVE|REFERENCES|REGEXP|RELATIVE|RELEASE|REPEAT|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESPECT|RESTORE|RESTRICT|RETURN|RETURNING|REVERT|RIGHT|RLIKE|ROLLBACK|ROLLUP|ROWCOUNT|ROWGUIDCOL|ROW_NUMBER|RTRIM|RULE|SAVE|SCHEMA|SCHEMAS|SCROLL|SECOND|SECONDS|SECOND_MICROSECOND|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEPARATOR|SESSION_USER|SETUSER|SHOW|SHUTDOWN|SIGNAL|SIMILAR|SOME|SOUNDS|SPACE|SPATIAL|SPECIFIC|SQL|SQLCODE|SQLERROR|SQLEXCEPTION|SQLID|SQLSTATE|SQLWARNING|SQL_BIG_RESULT|SQL_BUFFER_RESULT|SQL_CACHE|SQL_CALC_FOUND_ROWS|SQL_NO_CACHE|SQL_SMALL_RESULT|SSL|STARTING|STATISTICS|STATS_AUTO_RECALC|STATS_PERSISTENT|STATS_SAMPLE_PAGES|STDDEV_POP|STDDEV_SAMP|STORED|STRAIGHT_JOIN|SUBSTRING|SUM|SYMMETRIC|SYSTEM|SYSTEM_USER|TABLESAMPLE|TEMPORARY|TERMINATED|TEXTSIZE|TIMEZONE_HOUR|TIMEZONE_MINUTE|TINYBLOB|TINYINT|TINYTEXT|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATION|TREAT|TRIM|TRUE|TRUNCATE|TRY_CONVERT|TSEQUAL|UESCAPE|UNBOUNDED|UNDO|UNKNOWN|UNLOCK|UNNEST|UNPIVOT|UNSIGNED|UPDATETEXT|UPPER|USAGE|USE|USING|UTC_DATE|UTC_TIME|UTC_TIMESTAMP|VALUE|VARBINARY|VARCHARACTER|VARIADIC|VARYING|VAR_POP|VAR_SAMP|VERBOSE|VIRTUAL|WAITFOR|WHEN|WHILE|WINDOW|WITHIN|WITHOUT|WORK|WRITE|WRITETEXT|XML|XMLCAST|XMLEXISTS|XMLFOREST|XMLPARSE|XMLQUERY|XMLROOT|XMLSERIALIZE|XOR|YEAR|YEARS|YEAR_MONTH|ZEROFILL)$'
    replace: '"\1"'
transform_relation_name:
  - order: 1000
    comment: 'Protect reserved keywords'
    search: '(?i)^(ACCESSIBLE|ALLOCATE|ANALYSE|ANALYZE|ARE|ARRAY|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|AUTHORIZATION|AUTOINCREMENT|AVG|BACKUP|BEFORE|BEGIN|BIGINT|BINARY|BIT|BLOB|BOOLEAN|BOTH|BREAK|BROWSE|BULK|CALL|CASCADE|CASCADED|CASE|CAST|CHANGE|CHARACTER|CHARACTER_LENGTH|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COMMIT|COMPUTE|CONCAT|CONCURRENTLY|CONDITION|CONNECTION|CONSTRAINT|CONSTRAINTS|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CORRESPONDING|COUNT|CROSS|CUBE|CUME_DIST|CURRENT_CATALOG|CURRENT_DATE|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DATABASES|DAY|DAYS|DAY_HOUR|DAY_MICROSECOND|DAY_MINUTE|DAY_SECOND|DBCC|DEALLOCATE|DEC|DECLARE|DEFERRABLE|DEFERRED|DEFINE|DEFINER|DELAYED|DENSE_RANK|DENY|DESCRIBE|DETERMINISTIC|DIAGNOSTICS|DISCONNECT|DISTINCTROW|DISTRIBUTED|DIV|DO|DOUBLE|DUAL|EACH|ELSEIF|EMPTY|ENCLOSED|END|ENUM|ERRLVL|ESCAPE|ESCAPED|EXCEPTION|EXCLUDE|EXEC|EXECUTE|EXIT|EXPLAIN|EXTERNAL|EXTRACT|FALSE|FETCH|FILLFACTOR|FILTER|FIRST|FIRST_VALUE|FLOAT4|FLOAT8|FOLLOWING|FORCE|FOREIGN|FOUND|FREETEXT|FREETEXTTABLE|FREEZE|FULL|FULLTEXT|FUNCTION|GENERATED|GET|GLOB|GLOBAL|GO|GOTO|GROUPING|GROUPS|HASH|HIGH_PRIORITY|HOLDLOCK|HOUR|HOURS|HOUR_MICROSECOND|HOUR_MINUTE|HOUR_SECOND|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|ILIKE|INDEXED|INDICATOR|INFILE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INT|INT1|INT2|INT3|INT4|INT8|INTERVAL|INVOKER|IO_AFTER_GTIDS|IO_BEFORE_GTIDS|ISNULL|ISOLATION|ITERATE|JOIN|JSON_ARRAYAGG|JSON_EXISTS|JSON_OBJECTAGG|JSON_TABLE|KEY|KEYS|KILL|LAG|LAST|LAST_VALUE|LATERAL|LEAD|LEADING|LEAVE|LEFT|LIMIT|LINEAR|LINENO|LINES|LOAD|LOCALTIME|LOCALTIMESTAMP|LONGBLOB|LONGTEXT|LOOP|LOWER|LOW_PRIORITY|LTRIM|MASTER_BIND|MASTER_SSL_VERIFY_SERVER_CERT|MATCH|MAX|MAXVALUE|MEDIUMBLOB|MEDIUMINT|MEDIUMTEXT|MEMBER|MERGE|MICROSECOND|MICROSECONDS|MIDDLEINT|MIN|MINUTE|MINUTES|MINUTE_MICROSECOND|MINUTE_SECOND|MOD|MODIFIES|MONTH|MONTHS|NATIONAL|NATURAL|NCHAR|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NOTHING|NOTNULL|NO_WRITE_TO_BINLOG|NTH_VALUE|NTILE|NULLIF|NULLS|NUMERIC|NVARCHAR|OFF|OFFSET|OFFSETS|ONLY|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTIMIZE|OPTIMIZER_COSTS|OPTIONALLY|OUT|OUTER|OUTFILE|OUTPUT|OVER|OVERLAPS|PAD|PARALLEL|PARTIAL|PARTITION|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLACING|PLAN|PORTION|POSITION|PRECEDING|PRECISION|PREPARE|PRESERVE|PRIMARY|PRINT|PRIVILEGES|PROC|PROCEDURE|PURGE|RAISE|RAISERROR|RANGE|RANK|READ|READS|READTEXT|READ_WRITE|REAL|RECONFIGURE|RECURSIVE|REFERENCES|REGEXP|RELATIVE|RELEASE|REPEAT|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESPECT|RESTORE|RESTRICT|RETURN|RETURNING|REVERT|RIGHT|RLIKE|ROLLBACK|ROLLUP|ROWCOUNT|ROWGUIDCOL|ROW_NUMBER|RTRIM|RULE|SAVE|SCHEMA|SCHEMAS|SCROLL|SECOND|SECONDS|SECOND_MICROSECOND|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEPARATOR|SESSION_USER|SETUSER|SHOW|SHUTDOWN|SIGNAL|SIMILAR|SOME|SOUNDS|SPACE|SPATIAL|SPECIFIC|SQL|SQLCODE|SQLERROR|SQLEXCEPTION|SQLID|SQLSTATE|SQLWARNING|SQL_BIG_RESULT|SQL_BUFFER_RESULT|SQL_CACHE|SQL_CALC_FOUND_ROWS|SQL_NO_CACHE|SQL_SMALL_RESULT|SSL|STARTING|STATISTICS|STATS_AUTO_RECALC|STATS_PERSISTENT|STATS_SAMPLE_PAGES|STDDEV_POP|STDDEV_SAMP|STORED|STRAIGHT_JOIN|SUBSTRING|SUM|SYMMETRIC|SYSTEM|SYSTEM_USER|TABLESAMPLE|TEMPORARY|TERMINATED|TEXTSIZE|TIMEZONE_HOUR|TIMEZONE_MINUTE|TINYBLOB|TINYINT|TINYTEXT|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATION|TREAT|TRIM|TRUE|TRUNCATE|TRY_CONVERT|TSEQUAL|UESCAPE|UNBOUNDED|UNDO|UNKNOWN|UNLOCK|UNNEST|UNPIVOT|UNSIGNED|UPDATETEXT|UPPER|USAGE|USE|USING|UTC_DATE|UTC_TIME|UTC_TIMESTAMP|VALUE|VARBINARY|VARCHARACTER|VARIADIC|VARYING|VAR_POP|VAR_SAMP|VERBOSE|VIRTUAL|WAITFOR|WHEN|WHILE|WINDOW|WITHIN|WITHOUT|WORK|WRITE|WRITETEXT|XML|XMLCAST|XMLEXISTS|XMLFOREST|XMLPARSE|XMLQUERY|XMLROOT|XMLSERIALIZE|XOR|YEAR|YEARS|YEAR_MONTH|ZEROFILL)$'
    replace: '"\1"'
transform_datatype:
  - order: 100
    comment: '(Meant to replace the parent''s transformation)'
    search: '^\s*$'
    replace: 'VARCHAR2(42)'
  - order: 200
    comment: '(Meant to replace the parent''s transformation)'
    search: 'UNSIGNED_INT_PLACEHOLDER'
    replace: 'NUMBER(1) UNSIGNED'
  - order: 300
    comment: '(Meant to replace the parent''s transformation)'
    search: 'BOOLEAN_PLACEHOLDER'
    replace: 'NUMBER(1) DEFAULT 0'
