@@ -99,6 +99,167 @@ abstract class AbstractDb extends \Magento\Framework\Data\Collection
99
99
*/
100
100
protected $ extensionAttributesJoinProcessor ;
101
101
102
+ /** @see https://en.wikipedia.org/wiki/List_of_SQL_reserved_words */
103
+ private const SQL_RESERVED_WORDS = [
104
+ 'ABORT ' , 'ABORTSESSION ' , 'ABS ' , 'ABSENT ' , 'ABSOLUTE ' , 'ACCESS ' ,
105
+ 'ACCESS_LOCK ' , 'ACCESSIBLE ' , 'ACCOUNT ' , 'ACOS ' , 'ACOSH ' , 'ACTION ' ,
106
+ 'ADD ' , 'ADD_MONTHS ' , 'ADMIN ' , 'AFTER ' , 'AGGREGATE ' , 'ALIAS ' , 'ALL ' ,
107
+ 'ALLOCATE ' , 'ALLOW ' , 'ALTER ' , 'ALTERAND ' , 'AMP ' , 'ANALYSE ' , 'ANALYZE ' ,
108
+ 'AND ' , 'ANSIDATE ' , 'ANY ' , 'ARE ' , 'ARRAY ' , 'ARRAY_AGG ' , 'ARRAY_EXISTS ' ,
109
+ 'ARRAY_MAX_CARDINALITY ' , 'AS ' , 'ASC ' , 'ASENSITIVE ' , 'ASIN ' , 'ASINH ' ,
110
+ 'ASSERTION ' , 'ASSOCIATE ' , 'ASUTIME ' , 'ASYMMETRIC ' , 'AT ' , 'ATAN ' ,
111
+ 'ATAN2 ' , 'ATANH ' , 'ATOMIC ' , 'AUDIT ' , 'AUTHORIZATION ' , 'AUX ' ,
112
+ 'AUXILIARY ' , 'AVE ' , 'AVERAGE ' , 'AVG ' , 'BACKUP ' , 'BEFORE ' , 'BEGIN ' ,
113
+ 'BEGIN_FRAME ' , 'BEGIN_PARTITION ' , 'BETWEEN ' , 'BIGINT ' , 'BINARY ' , 'BIT ' ,
114
+ 'BLOB ' , 'BOOLEAN ' , 'BOTH ' , 'BREADTH ' , 'BREAK ' , 'BROWSE ' , 'BT ' ,
115
+ 'BUFFERPOOL ' , 'BULK ' , 'BUT ' , 'BY ' , 'BYTE ' , 'BYTEINT ' , 'BYTES ' , 'CALL ' ,
116
+ 'CALLED ' , 'CAPTURE ' , 'CARDINALITY ' , 'CASCADE ' , 'CASCADED ' , 'CASE ' ,
117
+ 'CASE_N ' , 'CASESPECIFIC ' , 'CAST ' , 'CATALOG ' , 'CCSID ' , 'CD ' , 'CEIL ' ,
118
+ 'CEILING ' , 'CHANGE ' , 'CHAR ' , 'CHAR_LENGTH ' , 'CHAR2HEXINT ' , 'CHARACTER ' ,
119
+ 'CHARACTER_LENGTH ' , 'CHARACTERS ' , 'CHARS ' , 'CHECK ' , 'CHECKPOINT ' ,
120
+ 'CLASS ' , 'CLASSIFIER ' , 'CLOB ' , 'CLONE ' , 'CLOSE ' , 'CLUSTER ' ,
121
+ 'CLUSTERED ' , 'CM ' , 'COALESCE ' , 'COLLATE ' , 'COLLATION ' , 'COLLECT ' ,
122
+ 'COLLECTION ' , 'COLLID ' , 'COLUMN ' , 'COLUMN_VALUE ' , 'COMMENT ' , 'COMMIT ' ,
123
+ 'COMPLETION ' , 'COMPRESS ' , 'COMPUTE ' , 'CONCAT ' , 'CONCURRENTLY ' ,
124
+ 'CONDITION ' , 'CONNECT ' , 'CONNECTION ' , 'CONSTRAINT ' , 'CONSTRAINTS ' ,
125
+ 'CONSTRUCTOR ' , 'CONTAINS ' , 'CONTAINSTABLE ' , 'CONTENT ' , 'CONTINUE ' ,
126
+ 'CONVERT ' , 'CONVERT_TABLE_HEADER ' , 'COPY ' , 'CORR ' , 'CORRESPONDING ' ,
127
+ 'COS ' , 'COSH ' , 'COUNT ' , 'COVAR_POP ' , 'COVAR_SAMP ' , 'CREATE ' , 'CROSS ' ,
128
+ 'CS ' , 'CSUM ' , 'CT ' , 'CUBE ' , 'CUME_DIST ' , 'CURRENT ' , 'CURRENT_CATALOG ' ,
129
+ 'CURRENT_DATE ' , 'CURRENT_DEFAULT_TRANSFORM_GROUP ' , 'CURRENT_LC_CTYPE ' ,
130
+ 'CURRENT_PATH ' , 'CURRENT_ROLE ' , 'CURRENT_ROW ' , 'CURRENT_SCHEMA ' ,
131
+ 'CURRENT_SERVER ' , 'CURRENT_TIME ' , 'CURRENT_TIMESTAMP ' ,
132
+ 'CURRENT_TIMEZONE ' , 'CURRENT_TRANSFORM_GROUP_FOR_TYPE ' , 'CURRENT_USER ' ,
133
+ 'CURRVAL ' , 'CURSOR ' , 'CV ' , 'CYCLE ' , 'DATA ' , 'DATABASE ' , 'DATABASES ' ,
134
+ 'DATABLOCKSIZE ' , 'DATE ' , 'DATEFORM ' , 'DAY ' , 'DAY_HOUR ' ,
135
+ 'DAY_MICROSECOND ' , 'DAY_MINUTE ' , 'DAY_SECOND ' , 'DAYS ' , 'DBCC ' ,
136
+ 'DBINFO ' , 'DEALLOCATE ' , 'DEC ' , 'DECFLOAT ' , 'DECIMAL ' , 'DECLARE ' ,
137
+ 'DEFAULT ' , 'DEFERRABLE ' , 'DEFERRED ' , 'DEFINE ' , 'DEGREES ' , 'DEL ' ,
138
+ 'DELAYED ' , 'DELETE ' , 'DENSE_RANK ' , 'DENY ' , 'DEPTH ' , 'DEREF ' , 'DESC ' ,
139
+ 'DESCRIBE ' , 'DESCRIPTOR ' , 'DESTROY ' , 'DESTRUCTOR ' , 'DETERMINISTIC ' ,
140
+ 'DIAGNOSTIC ' , 'DIAGNOSTICS ' , 'DICTIONARY ' , 'DISABLE ' , 'DISABLED ' ,
141
+ 'DISALLOW ' , 'DISCONNECT ' , 'DISK ' , 'DISTINCT ' , 'DISTINCTROW ' ,
142
+ 'DISTRIBUTED ' , 'DIV ' , 'DO ' , 'DOCUMENT ' , 'DOMAIN ' , 'DOUBLE ' , 'DROP ' ,
143
+ 'DSSIZE ' , 'DUAL ' , 'DUMP ' , 'DYNAMIC ' , 'EACH ' , 'ECHO ' , 'EDITPROC ' ,
144
+ 'ELEMENT ' , 'ELSE ' , 'ELSEIF ' , 'EMPTY ' , 'ENABLED ' , 'ENCLOSED ' ,
145
+ 'ENCODING ' , 'ENCRYPTION ' , 'END ' , 'END_FRAME ' , 'END_PARTITION ' ,
146
+ 'END-EXEC ' , 'ENDING ' , 'EQ ' , 'EQUALS ' , 'ERASE ' , 'ERRLVL ' , 'ERROR ' ,
147
+ 'ERRORFILES ' , 'ERRORTABLES ' , 'ESCAPE ' , 'ESCAPED ' , 'ET ' , 'EVERY ' ,
148
+ 'EXCEPT ' , 'EXCEPTION ' , 'EXCLUSIVE ' , 'EXEC ' , 'EXECUTE ' , 'EXISTS ' ,
149
+ 'EXIT ' , 'EXP ' , 'EXPLAIN ' , 'EXTERNAL ' , 'EXTRACT ' , 'FALLBACK ' , 'FALSE ' ,
150
+ 'FASTEXPORT ' , 'FENCED ' , 'FETCH ' , 'FIELDPROC ' , 'FILE ' , 'FILLFACTOR ' ,
151
+ 'FILTER ' , 'FINAL ' , 'FIRST ' , 'FIRST_VALUE ' , 'FLOAT ' , 'FLOAT4 ' , 'FLOAT8 ' ,
152
+ 'FLOOR ' , 'FOR ' , 'FORCE ' , 'FOREIGN ' , 'FORMAT ' , 'FOUND ' , 'FRAME_ROW ' ,
153
+ 'FREE ' , 'FREESPACE ' , 'FREETEXT ' , 'FREETEXTTABLE ' , 'FREEZE ' , 'FROM ' ,
154
+ 'FULL ' , 'FULLTEXT ' , 'FUNCTION ' , 'FUSION ' , 'GE ' , 'GENERAL ' , 'GENERATED ' ,
155
+ 'GET ' , 'GIVE ' , 'GLOBAL ' , 'GO ' , 'GOTO ' , 'GRANT ' , 'GRAPHIC ' , 'GROUP ' ,
156
+ 'GROUPING ' , 'GROUPS ' , 'GT ' , 'HANDLER ' , 'HASH ' , 'HASHAMP ' , 'HASHBAKAMP ' ,
157
+ 'HASHBUCKET ' , 'HASHROW ' , 'HAVING ' , 'HELP ' , 'HIGH_PRIORITY ' , 'HOLD ' ,
158
+ 'HOLDLOCK ' , 'HOST ' , 'HOUR ' , 'HOUR_MICROSECOND ' , 'HOUR_MINUTE ' ,
159
+ 'HOUR_SECOND ' , 'HOURS ' , 'IDENTIFIED ' , 'IDENTITY ' , 'IDENTITY_INSERT ' ,
160
+ 'IDENTITYCOL ' , 'IF ' , 'IGNORE ' , 'ILIKE ' , 'IMMEDIATE ' , 'IN ' , 'INCLUSIVE ' ,
161
+ 'INCONSISTENT ' , 'INCREMENT ' , 'INDEX ' , 'INDICATOR ' , 'INFILE ' , 'INHERIT ' ,
162
+ 'INITIAL ' , 'INITIALIZE ' , 'INITIALLY ' , 'INITIATE ' , 'INNER ' , 'INOUT ' ,
163
+ 'INPUT ' , 'INS ' , 'INSENSITIVE ' , 'INSERT ' , 'INSTEAD ' , 'INT ' , 'INT1 ' ,
164
+ 'INT2 ' , 'INT3 ' , 'INT4 ' , 'INT8 ' , 'INTEGER ' , 'INTEGERDATE ' , 'INTERSECT ' ,
165
+ 'INTERSECTION ' , 'INTERVAL ' , 'INTO ' , 'IO_AFTER_GTIDS ' ,
166
+ 'IO_BEFORE_GTIDS ' , 'IS ' , 'ISNULL ' , 'ISOBID ' , 'ISOLATION ' , 'ITERATE ' ,
167
+ 'JAR ' , 'JOIN ' , 'JOURNAL ' , 'JSON ' , 'JSON_ARRAY ' , 'JSON_ARRAYAGG ' ,
168
+ 'JSON_EXISTS ' , 'JSON_OBJECT ' , 'JSON_OBJECTAGG ' , 'JSON_QUERY ' ,
169
+ 'JSON_TABLE ' , 'JSON_TABLE_PRIMITIVE ' , 'JSON_VALUE ' , 'KEEP ' , 'KEY ' ,
170
+ 'KEYS ' , 'KILL ' , 'KURTOSIS ' , 'LABEL ' , 'LAG ' , 'LANGUAGE ' , 'LARGE ' ,
171
+ 'LAST ' , 'LAST_VALUE ' , 'LATERAL ' , 'LC_CTYPE ' , 'LE ' , 'LEAD ' , 'LEADING ' ,
172
+ 'LEAVE ' , 'LEFT ' , 'LESS ' , 'LEVEL ' , 'LIKE ' , 'LIKE_REGEX ' , 'LIMIT ' ,
173
+ 'LINEAR ' , 'LINENO ' , 'LINES ' , 'LISTAGG ' , 'LN ' , 'LOAD ' , 'LOADING ' ,
174
+ 'LOCAL ' , 'LOCALE ' , 'LOCALTIME ' , 'LOCALTIMESTAMP ' , 'LOCATOR ' ,
175
+ 'LOCATORS ' , 'LOCK ' , 'LOCKING ' , 'LOCKMAX ' , 'LOCKSIZE ' , 'LOG ' , 'LOG10 ' ,
176
+ 'LOGGING ' , 'LOGON ' , 'LONG ' , 'LONGBLOB ' , 'LONGTEXT ' , 'LOOP ' ,
177
+ 'LOW_PRIORITY ' , 'LOWER ' , 'LT ' , 'MACRO ' , 'MAINTAINED ' , 'MAP ' ,
178
+ 'MASTER_BIND ' , 'MASTER_SSL_VERIFY_SERVER_CERT ' , 'MATCH ' ,
179
+ 'MATCH_NUMBER ' , 'MATCH_RECOGNIZE ' , 'MATCHES ' , 'MATERIALIZED ' , 'MAVG ' ,
180
+ 'MAX ' , 'MAXEXTENTS ' , 'MAXIMUM ' , 'MAXVALUE ' , 'MCHARACTERS ' , 'MDIFF ' ,
181
+ 'MEDIUMBLOB ' , 'MEDIUMINT ' , 'MEDIUMTEXT ' , 'MEMBER ' , 'MERGE ' , 'METHOD ' ,
182
+ 'MICROSECOND ' , 'MICROSECONDS ' , 'MIDDLEINT ' , 'MIN ' , 'MINDEX ' , 'MINIMUM ' ,
183
+ 'MINUS ' , 'MINUTE ' , 'MINUTE_MICROSECOND ' , 'MINUTE_SECOND ' , 'MINUTES ' ,
184
+ 'MLINREG ' , 'MLOAD ' , 'MLSLABEL ' , 'MOD ' , 'MODE ' , 'MODIFIES ' , 'MODIFY ' ,
185
+ 'MODULE ' , 'MONITOR ' , 'MONRESOURCE ' , 'MONSESSION ' , 'MONTH ' , 'MONTHS ' ,
186
+ 'MSUBSTR ' , 'MSUM ' , 'MULTISET ' , 'NAMED ' , 'NAMES ' , 'NATIONAL ' , 'NATURAL ' ,
187
+ 'NCHAR ' , 'NCLOB ' , 'NE ' , 'NESTED_TABLE_ID ' , 'NEW ' , 'NEW_TABLE ' , 'NEXT ' ,
188
+ 'NEXTVAL ' , 'NO ' , 'NO_WRITE_TO_BINLOG ' , 'NOAUDIT ' , 'NOCHECK ' ,
189
+ 'NOCOMPRESS ' , 'NONCLUSTERED ' , 'NONE ' , 'NORMALIZE ' , 'NOT ' , 'NOTNULL ' ,
190
+ 'NOWAIT ' , 'NTH_VALUE ' , 'NTILE ' , 'NULL ' , 'NULLIF ' , 'NULLIFZERO ' ,
191
+ 'NULLS ' , 'NUMBER ' , 'NUMERIC ' , 'NUMPARTS ' , 'OBID ' , 'OBJECT ' , 'OBJECTS ' ,
192
+ 'OCCURRENCES_REGEX ' , 'OCTET_LENGTH ' , 'OF ' , 'OFF ' , 'OFFLINE ' , 'OFFSET ' ,
193
+ 'OFFSETS ' , 'OLD ' , 'OLD_TABLE ' , 'OMIT ' , 'ON ' , 'ONE ' , 'ONLINE ' , 'ONLY ' ,
194
+ 'OPEN ' , 'OPENDATASOURCE ' , 'OPENQUERY ' , 'OPENROWSET ' , 'OPENXML ' ,
195
+ 'OPERATION ' , 'OPTIMIZATION ' , 'OPTIMIZE ' , 'OPTIMIZER_COSTS ' , 'OPTION ' ,
196
+ 'OPTIONALLY ' , 'OR ' , 'ORDER ' , 'ORDINALITY ' , 'ORGANIZATION ' , 'OUT ' ,
197
+ 'OUTER ' , 'OUTFILE ' , 'OUTPUT ' , 'OVER ' , 'OVERLAPS ' , 'OVERLAY ' ,
198
+ 'OVERRIDE ' , 'PACKAGE ' , 'PAD ' , 'PADDED ' , 'PARAMETER ' , 'PARAMETERS ' ,
199
+ 'PART ' , 'PARTIAL ' , 'PARTITION ' , 'PARTITIONED ' , 'PARTITIONING ' ,
200
+ 'PASSWORD ' , 'PATH ' , 'PATTERN ' , 'PCTFREE ' , 'PER ' , 'PERCENT ' ,
201
+ 'PERCENT_RANK ' , 'PERCENTILE_CONT ' , 'PERCENTILE_DISC ' , 'PERIOD ' , 'PERM ' ,
202
+ 'PERMANENT ' , 'PIECESIZE ' , 'PIVOT ' , 'PLACING ' , 'PLAN ' , 'PORTION ' ,
203
+ 'POSITION ' , 'POSITION_REGEX ' , 'POSTFIX ' , 'POWER ' , 'PRECEDES ' ,
204
+ 'PRECISION ' , 'PREFIX ' , 'PREORDER ' , 'PREPARE ' , 'PRESERVE ' , 'PREVVAL ' ,
205
+ 'PRIMARY ' , 'PRINT ' , 'PRIOR ' , 'PRIQTY ' , 'PRIVATE ' , 'PRIVILEGES ' , 'PROC ' ,
206
+ 'PROCEDURE ' , 'PROFILE ' , 'PROGRAM ' , 'PROPORTIONAL ' , 'PROTECTION ' ,
207
+ 'PSID ' , 'PTF ' , 'PUBLIC ' , 'PURGE ' , 'QUALIFIED ' , 'QUALIFY ' , 'QUANTILE ' ,
208
+ 'QUERY ' , 'QUERYNO ' , 'RADIANS ' , 'RAISERROR ' , 'RANDOM ' , 'RANGE ' ,
209
+ 'RANGE_N ' , 'RANK ' , 'RAW ' , 'READ ' , 'READ_WRITE ' , 'READS ' , 'READTEXT ' ,
210
+ 'REAL ' , 'RECONFIGURE ' , 'RECURSIVE ' , 'REF ' , 'REFERENCES ' , 'REFERENCING ' ,
211
+ 'REFRESH ' , 'REGEXP ' , 'REGR_AVGX ' , 'REGR_AVGY ' , 'REGR_COUNT ' ,
212
+ 'REGR_INTERCEPT ' , 'REGR_R2 ' , 'REGR_SLOPE ' , 'REGR_SXX ' , 'REGR_SXY ' ,
213
+ 'REGR_SYY ' , 'RELATIVE ' , 'RELEASE ' , 'RENAME ' , 'REPEAT ' , 'REPLACE ' ,
214
+ 'REPLICATION ' , 'REPOVERRIDE ' , 'REQUEST ' , 'REQUIRE ' , 'RESIGNAL ' ,
215
+ 'RESOURCE ' , 'RESTART ' , 'RESTORE ' , 'RESTRICT ' , 'RESULT ' ,
216
+ 'RESULT_SET_LOCATOR ' , 'RESUME ' , 'RET ' , 'RETRIEVE ' , 'RETURN ' ,
217
+ 'RETURNING ' , 'RETURNS ' , 'REVALIDATE ' , 'REVERT ' , 'REVOKE ' , 'RIGHT ' ,
218
+ 'RIGHTS ' , 'RLIKE ' , 'ROLE ' , 'ROLLBACK ' , 'ROLLFORWARD ' , 'ROLLUP ' ,
219
+ 'ROUND_CEILING ' , 'ROUND_DOWN ' , 'ROUND_FLOOR ' , 'ROUND_HALF_DOWN ' ,
220
+ 'ROUND_HALF_EVEN ' , 'ROUND_HALF_UP ' , 'ROUND_UP ' , 'ROUTINE ' , 'ROW ' ,
221
+ 'ROW_NUMBER ' , 'ROWCOUNT ' , 'ROWGUIDCOL ' , 'ROWID ' , 'ROWNUM ' , 'ROWS ' ,
222
+ 'ROWSET ' , 'RULE ' , 'RUN ' , 'RUNNING ' , 'SAMPLE ' , 'SAMPLEID ' , 'SAVE ' ,
223
+ 'SAVEPOINT ' , 'SCHEMA ' , 'SCHEMAS ' , 'SCOPE ' , 'SCRATCHPAD ' , 'SCROLL ' ,
224
+ 'SEARCH ' , 'SECOND ' , 'SECOND_MICROSECOND ' , 'SECONDS ' , 'SECQTY ' ,
225
+ 'SECTION ' , 'SECURITY ' , 'SECURITYAUDIT ' , 'SEEK ' , 'SEL ' , 'SELECT ' ,
226
+ 'SEMANTICKEYPHRASETABLE ' , 'SEMANTICSIMILARITYDETAILSTABLE ' ,
227
+ 'SEMANTICSIMILARITYTABLE ' , 'SENSITIVE ' , 'SEPARATOR ' , 'SEQUENCE ' ,
228
+ 'SESSION ' , 'SESSION_USER ' , 'SET ' , 'SETRESRATE ' , 'SETS ' , 'SETSESSRATE ' ,
229
+ 'SETUSER ' , 'SHARE ' , 'SHOW ' , 'SHUTDOWN ' , 'SIGNAL ' , 'SIMILAR ' , 'SIMPLE ' ,
230
+ 'SIN ' , 'SINH ' , 'SIZE ' , 'SKEW ' , 'SKIP ' , 'SMALLINT ' , 'SOME ' , 'SOUNDEX ' ,
231
+ 'SOURCE ' , 'SPACE ' , 'SPATIAL ' , 'SPECIFIC ' , 'SPECIFICTYPE ' , 'SPOOL ' ,
232
+ 'SQL ' , 'SQL_BIG_RESULT ' , 'SQL_CALC_FOUND_ROWS ' , 'SQL_SMALL_RESULT ' ,
233
+ 'SQLEXCEPTION ' , 'SQLSTATE ' , 'SQLTEXT ' , 'SQLWARNING ' , 'SQRT ' , 'SS ' ,
234
+ 'SSL ' , 'STANDARD ' , 'START ' , 'STARTING ' , 'STARTUP ' , 'STATE ' ,
235
+ 'STATEMENT ' , 'STATIC ' , 'STATISTICS ' , 'STAY ' , 'STDDEV_POP ' ,
236
+ 'STDDEV_SAMP ' , 'STEPINFO ' , 'STOGROUP ' , 'STORED ' , 'STORES ' ,
237
+ 'STRAIGHT_JOIN ' , 'STRING_CS ' , 'STRUCTURE ' , 'STYLE ' , 'SUBMULTISET ' ,
238
+ 'SUBSCRIBER ' , 'SUBSET ' , 'SUBSTR ' , 'SUBSTRING ' , 'SUBSTRING_REGEX ' ,
239
+ 'SUCCEEDS ' , 'SUCCESSFUL ' , 'SUM ' , 'SUMMARY ' , 'SUSPEND ' , 'SYMMETRIC ' ,
240
+ 'SYNONYM ' , 'SYSDATE ' , 'SYSTEM ' , 'SYSTEM_TIME ' , 'SYSTEM_USER ' ,
241
+ 'SYSTIMESTAMP ' , 'TABLE ' , 'TABLESAMPLE ' , 'TABLESPACE ' , 'TAN ' , 'TANH ' ,
242
+ 'TBL_CS ' , 'TEMPORARY ' , 'TERMINATE ' , 'TERMINATED ' , 'TEXTSIZE ' , 'THAN ' ,
243
+ 'THEN ' , 'THRESHOLD ' , 'TIME ' , 'TIMESTAMP ' , 'TIMEZONE_HOUR ' ,
244
+ 'TIMEZONE_MINUTE ' , 'TINYBLOB ' , 'TINYINT ' , 'TINYTEXT ' , 'TITLE ' , 'TO ' ,
245
+ 'TOP ' , 'TRACE ' , 'TRAILING ' , 'TRAN ' , 'TRANSACTION ' , 'TRANSLATE ' ,
246
+ 'TRANSLATE_CHK ' , 'TRANSLATE_REGEX ' , 'TRANSLATION ' , 'TREAT ' , 'TRIGGER ' ,
247
+ 'TRIM ' , 'TRIM_ARRAY ' , 'TRUE ' , 'TRUNCATE ' , 'TRY_CONVERT ' , 'TSEQUAL ' ,
248
+ 'TYPE ' , 'UC ' , 'UESCAPE ' , 'UID ' , 'UNDEFINED ' , 'UNDER ' , 'UNDO ' , 'UNION ' ,
249
+ 'UNIQUE ' , 'UNKNOWN ' , 'UNLOCK ' , 'UNNEST ' , 'UNPIVOT ' , 'UNSIGNED ' ,
250
+ 'UNTIL ' , 'UPD ' , 'UPDATE ' , 'UPDATETEXT ' , 'UPPER ' , 'UPPERCASE ' , 'USAGE ' ,
251
+ 'USE ' , 'USER ' , 'USING ' , 'UTC_DATE ' , 'UTC_TIME ' , 'UTC_TIMESTAMP ' ,
252
+ 'VALIDATE ' , 'VALIDPROC ' , 'VALUE ' , 'VALUE_OF ' , 'VALUES ' , 'VAR_POP ' ,
253
+ 'VAR_SAMP ' , 'VARBINARY ' , 'VARBYTE ' , 'VARCHAR ' , 'VARCHAR2 ' ,
254
+ 'VARCHARACTER ' , 'VARGRAPHIC ' , 'VARIABLE ' , 'VARIADIC ' , 'VARIANT ' ,
255
+ 'VARYING ' , 'VCAT ' , 'VERBOSE ' , 'VERSIONING ' , 'VIEW ' , 'VIRTUAL ' ,
256
+ 'VOLATILE ' , 'VOLUMES ' , 'WAIT ' , 'WAITFOR ' , 'WHEN ' , 'WHENEVER ' , 'WHERE ' ,
257
+ 'WHILE ' , 'WIDTH_BUCKET ' , 'WINDOW ' , 'WITH ' , 'WITHIN ' , 'WITHIN_GROUP ' ,
258
+ 'WITHOUT ' , 'WLM ' , 'WORK ' , 'WRITE ' , 'WRITETEXT ' , 'XMLCAST ' , 'XMLEXISTS ' ,
259
+ 'XMLNAMESPACES ' , 'XOR ' , 'YEAR ' , 'YEAR_MONTH ' , 'YEARS ' , 'ZEROFILL ' ,
260
+ 'ZEROIFNULL ' , 'ZONE ' ,
261
+ ];
262
+
102
263
/**
103
264
* @param EntityFactoryInterface $entityFactory
104
265
* @param Logger $logger
@@ -505,6 +666,9 @@ protected function _renderOrders()
505
666
{
506
667
if (!$ this ->_isOrdersRendered ) {
507
668
foreach ($ this ->_orders as $ field => $ direction ) {
669
+ if (in_array (strtoupper ($ field ), self ::SQL_RESERVED_WORDS )) {
670
+ $ field = "` $ field` " ;
671
+ }
508
672
$ this ->_select ->order (new \Zend_Db_Expr ($ field . ' ' . $ direction ));
509
673
}
510
674
$ this ->_isOrdersRendered = true ;
0 commit comments