help_en: 'convert the conceptual model into a physical model for Microsoft SQL Server'
help_fr: 'convertit le modèle conceptuel en un modèle physique pour Microsoft SQL Server'
help_zh: '将概念模型转换为 Microsoft SQL Server 的物理模型'
fr_examples:
  - order: 1
    example: 'mssql'
    explanation: 'version de base'
  - order: 4
    example: 'mssql:b'
    explanation: 'avec _boilerplate_'
parent: 'sql'
stem_suffix: '_ddl_mssql'
transform_label:
  - order: 1100
    comment: 'Protect reserved keywords'
    search: '(?i)^(ACCESS|ACCESSIBLE|ALLOCATE|ANALYSE|ANALYZE|ARE|ARRAY|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|AUDIT|AUTOINCREMENT|AVG|BEFORE|BIGINT|BINARY|BIT|BLOB|BOOLEAN|BOTH|CALL|CASCADED|CAST|CHANGE|CHAR|CHARACTER|CHARACTER_LENGTH|CLUSTER|COLLATION|COMMENT|COMPRESS|CONCAT|CONCURRENTLY|CONDITION|CONNECT|CONNECTION|CONSTRAINTS|CORRESPONDING|COUNT|CUBE|CUME_DIST|CURRENT_CATALOG|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|DATABASES|DATE|DAY|DAYS|DAY_HOUR|DAY_MICROSECOND|DAY_MINUTE|DAY_SECOND|DEC|DECIMAL|DEFERRABLE|DEFERRED|DEFINE|DEFINER|DELAYED|DENSE_RANK|DESCRIBE|DETERMINISTIC|DIAGNOSTICS|DISCONNECT|DISTINCTROW|DIV|DO|DUAL|EACH|ELSEIF|EMPTY|ENCLOSED|ENUM|ESCAPED|EXCEPTION|EXCLUDE|EXCLUSIVE|EXPLAIN|EXTRACT|FALSE|FILTER|FIRST|FIRST_VALUE|FLOAT|FLOAT4|FLOAT8|FOLLOWING|FORCE|FOUND|FREEZE|FULLTEXT|GENERATED|GET|GLOB|GLOBAL|GO|GROUPING|GROUPS|HASH|HIGH_PRIORITY|HOUR|HOURS|HOUR_MICROSECOND|HOUR_MINUTE|HOUR_SECOND|IDENTIFIED|IGNORE|ILIKE|IMMEDIATE|INCREMENT|INDEXED|INDICATOR|INFILE|INITIAL|INITIALLY|INOUT|INPUT|INSENSITIVE|INT|INT1|INT2|INT3|INT4|INT8|INTEGER|INTEVAL|INVOKER|IO_AFTER_GTIDS|IO_BEFORE_GTIDS|ISNULL|ISOLATION|ITERATE|JSON_ARRAYAGG|JSON_EXISTS|JSON_OBJECTAGG|JSON_TABLE|KEYS|LAG|LAST|LAST_VALUE|LATERAL|LEAD|LEADING|LEAVE|LEVEL|LIMIT|LINEAR|LINES|LOAD|LOCALTIME|LOCALTIMESTAMP|LOCK|LONG|LONGBLOB|LONGTEXT|LOOP|LOWER|LOW_PRIORITY|LTRIM|MASTER_BIND|MASTER_SSL_VERIFY_SERVER_CERT|MATCH|MAX|MAXEXTENTS|MAXVALUE|MEDIUMBLOB|MEDIUMINT|MEDIUMTEXT|MEMBER|MICROSECOND|MICROSECONDS|MIDDLEINT|MIN|MINUS|MINUTE|MINUTES|MINUTE_MICROSECOND|MINUTE_SECOND|MLSLABEL|MOD|MODE|MODIFIES|MODIFY|MONTH|MONTHS|NATURAL|NCHAR|NEW|NEXT|NO|NOAUDIT|NOCOMPRESS|NONE|NOTHING|NOTNULL|NOWAIT|NO_WRITE_TO_BINLOG|NTH_VALUE|NTILE|NULLS|NUMBER|NUMERIC|NVARCHAR|OFFLINE|OFFSET|ONLINE|ONLY|OPTIMIZE|OPTIMIZER_COSTS|OPTIONALLY|OUT|OUTFILE|OUTPUT|OVERLAPS|PAD|PARTIAL|PARTITION|PCTFREE|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PLACING|PORTION|POSITION|PRECEDING|PRECISION|PREPARE|PRESERVE|PRIOR|PRIVILEGES|PURGE|RAISE|RANGE|RANK|RAW|READS|READ_WRITE|REAL|RECURSIVE|REGEXP|RELATIVE|RELEASE|RENAME|REPEAT|REPLACE|REQUIRE|RESIGNAL|RESOURCE|RESPECT|RETURNING|RLIKE|ROLLUP|ROW|ROWID|ROWNUM|ROWS|ROW_NUMBER|RTRIM|SCHEMAS|SCROLL|SECOND|SECONDS|SECOND_MICROSECOND|SENSITIVE|SEPARATOR|SESSION|SHARE|SHOW|SIGNAL|SIMILAR|SIZE|SMALLINT|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|START|STARTING|STATS_AUTO_RECALC|STATS_PERSISTENT|STATS_SAMPLE_PAGES|STDDEV_POP|STDDEV_SAMP|STORED|STRAIGHT_JOIN|SUBSTRING|SUCCESSFUL|SUM|SYMMETRIC|SYNONYM|SYSDATE|SYSTEM|TEMPORARY|TERMINATED|TIMEZONE_HOUR|TIMEZONE_MINUTE|TINYBLOB|TINYINT|TINYTEXT|TRAILING|TRANSLATE|TRANSLATION|TREAT|TRIM|TRUE|UESCAPE|UID|UNBOUNDED|UNDO|UNKNOWN|UNLOCK|UNNEST|UNSIGNED|UPPER|USAGE|USING|UTC_DATE|UTC_TIME|UTC_TIMESTAMP|VALIDATE|VALUE|VARBINARY|VARCHAR|VARCHAR2|VARCHARACTER|VARIADIC|VAR_POP|VAR_SAMP|VERBOSE|VIRTUAL|WHENEVER|WINDOW|WITHIN|WITHOUT|WORK|WRITE|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)^(ACCESS|ACCESSIBLE|ALLOCATE|ANALYSE|ANALYZE|ARE|ARRAY|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|AUDIT|AUTOINCREMENT|AVG|BEFORE|BIGINT|BINARY|BIT|BLOB|BOOLEAN|BOTH|CALL|CASCADED|CAST|CHANGE|CHAR|CHARACTER|CHARACTER_LENGTH|CLUSTER|COLLATION|COMMENT|COMPRESS|CONCAT|CONCURRENTLY|CONDITION|CONNECT|CONNECTION|CONSTRAINTS|CORRESPONDING|COUNT|CUBE|CUME_DIST|CURRENT_CATALOG|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|DATABASES|DATE|DAY|DAYS|DAY_HOUR|DAY_MICROSECOND|DAY_MINUTE|DAY_SECOND|DEC|DECIMAL|DEFERRABLE|DEFERRED|DEFINE|DEFINER|DELAYED|DENSE_RANK|DESCRIBE|DETERMINISTIC|DIAGNOSTICS|DISCONNECT|DISTINCTROW|DIV|DO|DUAL|EACH|ELSEIF|EMPTY|ENCLOSED|ENUM|ESCAPED|EXCEPTION|EXCLUDE|EXCLUSIVE|EXPLAIN|EXTRACT|FALSE|FILTER|FIRST|FIRST_VALUE|FLOAT|FLOAT4|FLOAT8|FOLLOWING|FORCE|FOUND|FREEZE|FULLTEXT|GENERATED|GET|GLOB|GLOBAL|GO|GROUPING|GROUPS|HASH|HIGH_PRIORITY|HOUR|HOURS|HOUR_MICROSECOND|HOUR_MINUTE|HOUR_SECOND|IDENTIFIED|IGNORE|ILIKE|IMMEDIATE|INCREMENT|INDEXED|INDICATOR|INFILE|INITIAL|INITIALLY|INOUT|INPUT|INSENSITIVE|INT|INT1|INT2|INT3|INT4|INT8|INTEGER|INTERVAL|INVOKER|IO_AFTER_GTIDS|IO_BEFORE_GTIDS|ISNULL|ISOLATION|ITERATE|JSON_ARRAYAGG|JSON_EXISTS|JSON_OBJECTAGG|JSON_TABLE|KEYS|LAG|LAST|LAST_VALUE|LATERAL|LEAD|LEADING|LEAVE|LEVEL|LIMIT|LINEAR|LINES|LOAD|LOCALTIME|LOCALTIMESTAMP|LOCK|LONG|LONGBLOB|LONGTEXT|LOOP|LOWER|LOW_PRIORITY|LTRIM|MASTER_BIND|MASTER_SSL_VERIFY_SERVER_CERT|MATCH|MAX|MAXEXTENTS|MAXVALUE|MEDIUMBLOB|MEDIUMINT|MEDIUMTEXT|MEMBER|MICROSECOND|MICROSECONDS|MIDDLEINT|MIN|MINUS|MINUTE|MINUTES|MINUTE_MICROSECOND|MINUTE_SECOND|MLSLABEL|MOD|MODE|MODIFIES|MODIFY|MONTH|MONTHS|NATURAL|NCHAR|NEW|NEXT|NO|NOAUDIT|NOCOMPRESS|NONE|NOTHING|NOTNULL|NOWAIT|NO_WRITE_TO_BINLOG|NTH_VALUE|NTILE|NULLS|NUMBER|NUMERIC|NVARCHAR|OFFLINE|OFFSET|ONLINE|ONLY|OPTIMIZE|OPTIMIZER_COSTS|OPTIONALLY|OUT|OUTFILE|OUTPUT|OVERLAPS|PAD|PARTIAL|PARTITION|PCTFREE|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PLACING|PORTION|POSITION|PRECEDING|PRECISION|PREPARE|PRESERVE|PRIOR|PRIVILEGES|PURGE|RAISE|RANGE|RANK|RAW|READS|READ_WRITE|REAL|RECURSIVE|REGEXP|RELATIVE|RELEASE|RENAME|REPEAT|REPLACE|REQUIRE|RESIGNAL|RESOURCE|RESPECT|RETURNING|RLIKE|ROLLUP|ROW|ROWID|ROWNUM|ROWS|ROW_NUMBER|RTRIM|SCHEMAS|SCROLL|SECOND|SECONDS|SECOND_MICROSECOND|SENSITIVE|SEPARATOR|SESSION|SHARE|SHOW|SIGNAL|SIMILAR|SIZE|SMALLINT|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|START|STARTING|STATS_AUTO_RECALC|STATS_PERSISTENT|STATS_SAMPLE_PAGES|STDDEV_POP|STDDEV_SAMP|STORED|STRAIGHT_JOIN|SUBSTRING|SUCCESSFUL|SUM|SYMMETRIC|SYNONYM|SYSDATE|SYSTEM|TEMPORARY|TERMINATED|TIMEZONE_HOUR|TIMEZONE_MINUTE|TINYBLOB|TINYINT|TINYTEXT|TRAILING|TRANSLATE|TRANSLATION|TREAT|TRIM|TRUE|UESCAPE|UID|UNBOUNDED|UNDO|UNKNOWN|UNLOCK|UNNEST|UNSIGNED|UPPER|USAGE|USING|UTC_DATE|UTC_TIME|UTC_TIMESTAMP|VALIDATE|VALUE|VARBINARY|VARCHAR|VARCHAR2|VARCHARACTER|VARIADIC|VAR_POP|VAR_SAMP|VERBOSE|VIRTUAL|WHENEVER|WINDOW|WITHIN|WITHOUT|WORK|WRITE|XML|XMLCAST|XMLEXISTS|XMLFOREST|XMLPARSE|XMLQUERY|XMLROOT|XMLSERIALIZE|XOR|YEAR|YEARS|YEAR_MONTH|ZEROFILL)$'
    replace: '[\1]'
transform_datatype:
  - order: 200
    search: 'BOOLEAN_PLACEHOLDER'
    replace: 'BIT'
  - order: 300
    comment: '(Meant to replace the parent''s transformation)'
    search: 'UNSIGNED_INT_PLACEHOLDER'
    replace: 'TINYINT'
