From 2ba8f87a894b9fca42457b3723abc0ea3d7d7b74 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Mon, 12 Sep 2011 10:19:51 +0200 Subject: [PATCH] MDL-29322 instruct oracle to use current NLS char size when creating VARCHAR2 fields This solves problems on servers with default configuration where VARCHAR2 sizes are specified in bytes. Also add more reserved words. --- lib/ddl/oracle_sql_generator.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/ddl/oracle_sql_generator.php b/lib/ddl/oracle_sql_generator.php index 2e0b37c7745..9450388dcc2 100644 --- a/lib/ddl/oracle_sql_generator.php +++ b/lib/ddl/oracle_sql_generator.php @@ -163,11 +163,14 @@ class oracle_sql_generator extends sql_generator { } break; case XMLDB_TYPE_CHAR: + // Do not use NVARCHAR2 here because it has hardcoded 1333 char limit, + // VARCHAR2 allows us to create larger fields that error out later during runtime + // only when too many non-ascii utf-8 chars present. $dbtype = 'VARCHAR2'; if (empty($xmldb_length)) { $xmldb_length='255'; } - $dbtype .= '(' . $xmldb_length . ')'; + $dbtype .= '(' . $xmldb_length . ' CHAR)'; // CHAR is required because BYTE is the default break; case XMLDB_TYPE_TEXT: $dbtype = 'CLOB'; @@ -670,8 +673,8 @@ class oracle_sql_generator extends sql_generator { 'increment', 'index', 'initial', 'insert', 'integer', 'intersect', 'into', 'is', 'level', 'like', 'lock', 'long', 'maxextents', 'minus', - 'mlslabel', 'mode', 'modify', 'noaudit', - 'nocompress', 'not', 'nowait', 'null', 'number', + 'mlslabel', 'mode', 'modify', 'nchar', 'nclob', 'noaudit', + 'nocompress', 'not', 'nowait', 'null', 'number', 'nvarchar2', 'of', 'offline', 'on', 'online', 'option', 'or', 'order', 'pctfree', 'prior', 'privileges', 'public', 'raw', 'rename', 'resource', 'revoke', -- 2.43.0