File tree Expand file tree Collapse file tree 10 files changed +393
-75
lines changed
tests_testbox/specs/model Expand file tree Collapse file tree 10 files changed +393
-75
lines changed Original file line number Diff line number Diff line change @@ -180,5 +180,12 @@ component extends="wheels.databaseAdapters.Base" output=false {
180180 return local .columns ;
181181 }
182182
183+ /**
184+ * Define H2 reserved words.
185+ */
186+ public string function $escapeReservedWords (required string word ) {
187+ // TODO
188+ return arguments .word ;
189+ }
183190
184191}
Original file line number Diff line number Diff line change @@ -235,16 +235,16 @@ component extends="wheels.databaseAdapters.Base" output=false {
235235 );
236236 if (! ListFindNoCase (local .columnList , ListFirst (arguments .primaryKey ))) {
237237 local .rv = {};
238-
238+
239239 // Use @@IDENTITY instead of SCOPE_IDENTITY() for BoxLang compatibility
240240 // SCOPE_IDENTITY() returns empty values in BoxLang with SQL Server
241241 query = $query (sql = " SELECT @@IDENTITY AS lastId" , argumentCollection = arguments .queryAttributes );
242-
242+
243243 // Fallback to SCOPE_IDENTITY() if @@IDENTITY fails (for other CFML engines)
244244 if (! len (query .lastId )) {
245245 query = $query (sql = " SELECT SCOPE_IDENTITY() AS lastId" , argumentCollection = arguments .queryAttributes );
246246 }
247-
247+
248248 local .rv [$generatedKey ()] = query .lastId ;
249249 return local .rv ;
250250 }
@@ -258,5 +258,12 @@ component extends="wheels.databaseAdapters.Base" output=false {
258258 return " NEWID()" ;
259259 }
260260
261+ /**
262+ * Define MSSQL reserved words.
263+ */
264+ public string function $escapeReservedWords (required string word ) {
265+ // TODO
266+ return arguments .word ;
267+ }
261268
262269}
Original file line number Diff line number Diff line change @@ -115,5 +115,279 @@ component extends="wheels.databaseAdapters.Base" output=false {
115115 return " () VALUES()" ;
116116 }
117117
118+ /**
119+ * Define MySQL reserved words.
120+ */
121+ public string function $escapeReservedWords (required string word ) {
122+ local .reservedWords = [
123+ " ACCESSIBLE" ,
124+ " ADD" ,
125+ " ALL" ,
126+ " ALTER" ,
127+ " ANALYZE" ,
128+ " AND" ,
129+ " AS" ,
130+ " ASC" ,
131+ " ASENSITIVE" ,
132+ " BEFORE" ,
133+ " BETWEEN" ,
134+ " BIGINT" ,
135+ " BINARY" ,
136+ " BLOB" ,
137+ " BOTH" ,
138+ " BY" ,
139+ " CALL" ,
140+ " CASCADE" ,
141+ " CASE" ,
142+ " CHANGE" ,
143+ " CHAR" ,
144+ " CHARACTER" ,
145+ " CHECK" ,
146+ " COLLATE" ,
147+ " COLUMN" ,
148+ " CONDITION" ,
149+ " CONSTRAINT" ,
150+ " CONTINUE" ,
151+ " CONVERT" ,
152+ " CREATE" ,
153+ " CROSS" ,
154+ " CUBE" ,
155+ " CUME_DIST" ,
156+ " CURRENT_DATE" ,
157+ " CURRENT_TIME" ,
158+ " CURRENT_TIMESTAMP" ,
159+ " CURRENT_USER" ,
160+ " CURSOR" ,
161+ " DATABASE" ,
162+ " DATABASES" ,
163+ " DAY_HOUR" ,
164+ " DAY_MICROSECOND" ,
165+ " DAY_MINUTE" ,
166+ " DAY_SECOND" ,
167+ " DEC" ,
168+ " DECIMAL" ,
169+ " DECLARE" ,
170+ " DEFAULT" ,
171+ " DELAYED" ,
172+ " DELETE" ,
173+ " DENSE_RANK" ,
174+ " DESC" ,
175+ " DESCRIBE" ,
176+ " DETERMINISTIC" ,
177+ " DISTINCT" ,
178+ " DISTINCTROW" ,
179+ " DIV" ,
180+ " DOUBLE" ,
181+ " DROP" ,
182+ " DUAL" ,
183+ " EACH" ,
184+ " ELSE" ,
185+ " ELSEIF" ,
186+ " EMPTY" ,
187+ " ENCLOSED" ,
188+ " ESCAPED" ,
189+ " EXCEPT" ,
190+ " EXISTS" ,
191+ " EXIT" ,
192+ " EXPLAIN" ,
193+ " FALSE" ,
194+ " FETCH" ,
195+ " FIRST_VALUE" ,
196+ " FLOAT" ,
197+ " FLOAT4" ,
198+ " FLOAT8" ,
199+ " FOR" ,
200+ " FORCE" ,
201+ " FOREIGN" ,
202+ " FROM" ,
203+ " FULLTEXT" ,
204+ " FUNCTION" ,
205+ " GENERATED" ,
206+ " GET" ,
207+ " GRANT" ,
208+ " GROUP" ,
209+ " GROUPING" ,
210+ " GROUPS" ,
211+ " HAVING" ,
212+ " HIGH_PRIORITY" ,
213+ " HOUR_MICROSECOND" ,
214+ " HOUR_MINUTE" ,
215+ " HOUR_SECOND" ,
216+ " IF" ,
217+ " IGNORE" ,
218+ " IN" ,
219+ " INDEX" ,
220+ " INFILE" ,
221+ " INNER" ,
222+ " INOUT" ,
223+ " INSENSITIVE" ,
224+ " INSERT" ,
225+ " INT" ,
226+ " INT1" ,
227+ " INT2" ,
228+ " INT3" ,
229+ " INT4" ,
230+ " INT8" ,
231+ " INTEGER" ,
232+ " INTERVAL" ,
233+ " INTO" ,
234+ " IO_AFTER_GTIDS" ,
235+ " IO_BEFORE_GTIDS" ,
236+ " IS" ,
237+ " ITERATE" ,
238+ " JOIN" ,
239+ " JSON_TABLE" ,
240+ " KEY" ,
241+ " KEYS" ,
242+ " KILL" ,
243+ " LAG" ,
244+ " LAST_VALUE" ,
245+ " LEAD" ,
246+ " LEADING" ,
247+ " LEAVE" ,
248+ " LEFT" ,
249+ " LIKE" ,
250+ " LIMIT" ,
251+ " LINEAR" ,
252+ " LINES" ,
253+ " LOAD" ,
254+ " LOCALTIME" ,
255+ " LOCALTIMESTAMP" ,
256+ " LOCK" ,
257+ " LONG" ,
258+ " LONGBLOB" ,
259+ " LONGTEXT" ,
260+ " LOOP" ,
261+ " LOW_PRIORITY" ,
262+ " MASTER_BIND" ,
263+ " MASTER_SSL_VERIFY_SERVER_CERT" ,
264+ " MATCH" ,
265+ " MAXVALUE" ,
266+ " MEDIUMBLOB" ,
267+ " MEDIUMINT" ,
268+ " MEDIUMTEXT" ,
269+ " MIDDLEINT" ,
270+ " MINUTE_MICROSECOND" ,
271+ " MINUTE_SECOND" ,
272+ " MOD" ,
273+ " MODIFIES" ,
274+ " NATURAL" ,
275+ " NOT" ,
276+ " NO_WRITE_TO_BINLOG" ,
277+ " NTH_VALUE" ,
278+ " NTILE" ,
279+ " NULL" ,
280+ " NUMERIC" ,
281+ " OF" ,
282+ " ON" ,
283+ " OPTIMIZE" ,
284+ " OPTIMIZER_COSTS" ,
285+ " OPTION" ,
286+ " OPTIONALLY" ,
287+ " OR" ,
288+ " ORDER" ,
289+ " OUT" ,
290+ " OUTER" ,
291+ " OUTFILE" ,
292+ " OVER" ,
293+ " PARTITION" ,
294+ " PERCENT_RANK" ,
295+ " PERSIST" ,
296+ " PERSIST_ONLY" ,
297+ " PRECISION" ,
298+ " PRIMARY" ,
299+ " PROCEDURE" ,
300+ " PURGE" ,
301+ " RANGE" ,
302+ " RANK" ,
303+ " READ" ,
304+ " READS" ,
305+ " READ_WRITE" ,
306+ " REAL" ,
307+ " RECURSIVE" ,
308+ " REFERENCES" ,
309+ " REGEXP" ,
310+ " RELEASE" ,
311+ " RENAME" ,
312+ " REPEAT" ,
313+ " REPLACE" ,
314+ " REQUIRE" ,
315+ " RESIGNAL" ,
316+ " RESTRICT" ,
317+ " RETURN" ,
318+ " REVOKE" ,
319+ " RIGHT" ,
320+ " RLIKE" ,
321+ " ROW" ,
322+ " ROWS" ,
323+ " ROW_NUMBER" ,
324+ " SCHEMA" ,
325+ " SCHEMAS" ,
326+ " SECOND_MICROSECOND" ,
327+ " SELECT" ,
328+ " SENSITIVE" ,
329+ " SEPARATOR" ,
330+ " SET" ,
331+ " SHOW" ,
332+ " SIGNAL" ,
333+ " SMALLINT" ,
334+ " SPATIAL" ,
335+ " SPECIFIC" ,
336+ " SQL" ,
337+ " SQLEXCEPTION" ,
338+ " SQLSTATE" ,
339+ " SQLWARNING" ,
340+ " SQL_BIG_RESULT" ,
341+ " SQL_CALC_FOUND_ROWS" ,
342+ " SQL_SMALL_RESULT" ,
343+ " SSL" ,
344+ " STARTING" ,
345+ " STORED" ,
346+ " STRAIGHT_JOIN" ,
347+ " SYSTEM" ,
348+ " TABLE" ,
349+ " TERMINATED" ,
350+ " THEN" ,
351+ " TINYBLOB" ,
352+ " TINYINT" ,
353+ " TINYTEXT" ,
354+ " TO" ,
355+ " TRAILING" ,
356+ " TRIGGER" ,
357+ " TRUE" ,
358+ " UNDO" ,
359+ " UNION" ,
360+ " UNIQUE" ,
361+ " UNLOCK" ,
362+ " UNSIGNED" ,
363+ " UPDATE" ,
364+ " USAGE" ,
365+ " USE" ,
366+ " USING" ,
367+ " UTC_DATE" ,
368+ " UTC_TIME" ,
369+ " UTC_TIMESTAMP" ,
370+ " VALUES" ,
371+ " VARBINARY" ,
372+ " VARCHAR" ,
373+ " VARCHARACTER" ,
374+ " VARYING" ,
375+ " VIRTUAL" ,
376+ " WHEN" ,
377+ " WHERE" ,
378+ " WHILE" ,
379+ " WINDOW" ,
380+ " WITH" ,
381+ " WRITE" ,
382+ " XOR" ,
383+ " YEAR_MONTH" ,
384+ " ZEROFILL" ,
385+ ];
386+ local .rv = arguments .word ;
387+ if (local .reservedWords .findNoCase (arguments .word )) {
388+ local .rv = " `#local .rv #`" ;
389+ }
390+ return local .rv ;
391+ }
118392
119393}
Original file line number Diff line number Diff line change @@ -141,5 +141,12 @@ component extends="wheels.databaseAdapters.Base" output=false {
141141 return arguments .table & " " & arguments .alias ;
142142 }
143143
144+ /**
145+ * Define Oracle reserved words.
146+ */
147+ public string function $escapeReservedWords (required string word ) {
148+ // TODO
149+ return arguments .word ;
150+ }
144151
145152}
Original file line number Diff line number Diff line change @@ -172,5 +172,12 @@ component extends="wheels.databaseAdapters.Base" output=false {
172172 return " random()" ;
173173 }
174174
175+ /**
176+ * Define Postgres reserved words.
177+ */
178+ public string function $escapeReservedWords (required string word ) {
179+ // TODO
180+ return arguments .word ;
181+ }
175182
176183}
Original file line number Diff line number Diff line change @@ -104,7 +104,7 @@ component extends="wheels.databaseAdapters.Base" output=false {
104104 " ,,"
105105 );
106106 }
107-
107+
108108 // If the primary key column wasn't part of the INSERT, we fetch last inserted ID
109109 if (! ListFindNoCase (local .columnList , ListFirst (arguments .primaryKey ))) {
110110 local .rv = {};
@@ -126,4 +126,12 @@ component extends="wheels.databaseAdapters.Base" output=false {
126126 return " DEFAULT VALUES" ;
127127 }
128128
129+ /**
130+ * Define SQLite reserved words.
131+ */
132+ public string function $escapeReservedWords (required string word ) {
133+ // TODO
134+ return arguments .word ;
135+ }
136+
129137}
You can’t perform that action at this time.
0 commit comments