remove obsolete thing that never worked
[scpubgit/Q-Branch.git] / t / 24order_by_chunks.t
CommitLineData
1b630cfe 1use strict;
2use warnings;
3use Test::More;
4use Test::Exception;
5use Data::Dumper::Concise;
6
7use SQL::Abstract;
8
9use SQL::Abstract::Test import => ['is_same_sql_bind'];
10my @cases = (
11 [
12 undef,
13 [
14 \"colA DESC"
15 ],
16 [
17 "colA DESC"
18 ]
19 ],
20 [
21 "`",
22 [
23 \"colA DESC"
24 ],
25 [
26 "colA DESC"
27 ]
28 ],
29 [
30 undef,
31 [
32 "colA"
33 ],
34 [
35 "colA"
36 ]
37 ],
38 [
39 "`",
40 [
41 "colA"
42 ],
43 [
44 "`colA`"
45 ]
46 ],
47 [
48 undef,
49 [
50 "colA DESC"
51 ],
52 [
53 "colA DESC"
54 ]
55 ],
56 [
57 "`",
58 [
59 "colA DESC"
60 ],
61 [
62 "`colA DESC`"
63 ]
64 ],
65 [
66 undef,
67 [
68 "colA"
69 ],
70 [
71 "colA"
72 ]
73 ],
74 [
75 undef,
76 [
77 "colB"
78 ],
79 [
80 "colB"
81 ]
82 ],
83 [
84 undef,
85 [
86 [
87 "colA",
88 "colB"
89 ]
90 ],
91 [
92 "colA",
93 "colB"
94 ]
95 ],
96 [
97 "`",
98 [
99 "colA"
100 ],
101 [
102 "`colA`"
103 ]
104 ],
105 [
106 "`",
107 [
108 "colB"
109 ],
110 [
111 "`colB`"
112 ]
113 ],
114 [
115 "`",
116 [
117 [
118 "colA",
119 "colB"
120 ]
121 ],
122 [
123 "`colA`",
124 "`colB`"
125 ]
126 ],
127 [
128 undef,
129 [
130 "colA ASC"
131 ],
132 [
133 "colA ASC"
134 ]
135 ],
136 [
137 undef,
138 [
139 "colB DESC"
140 ],
141 [
142 "colB DESC"
143 ]
144 ],
145 [
146 undef,
147 [
148 [
149 "colA ASC",
150 "colB DESC"
151 ]
152 ],
153 [
154 "colA ASC",
155 "colB DESC"
156 ]
157 ],
158 [
159 "`",
160 [
161 "colA ASC"
162 ],
163 [
164 "`colA ASC`"
165 ]
166 ],
167 [
168 "`",
169 [
170 "colB DESC"
171 ],
172 [
173 "`colB DESC`"
174 ]
175 ],
176 [
177 "`",
178 [
179 [
180 "colA ASC",
181 "colB DESC"
182 ]
183 ],
184 [
185 "`colA ASC`",
186 "`colB DESC`"
187 ]
188 ],
189 [
190 undef,
191 [
192 "colA"
193 ],
194 [
195 "colA"
196 ]
197 ],
198 [
199 undef,
200 [
201 {
202 "-asc" => "colA"
203 }
204 ],
205 [
206 [
207 "colA ASC"
208 ]
209 ]
210 ],
211 [
212 "`",
213 [
214 "colA"
215 ],
216 [
217 "`colA`"
218 ]
219 ],
220 [
221 "`",
222 [
223 {
224 "-asc" => "colA"
225 }
226 ],
227 [
228 [
229 "`colA` ASC"
230 ]
231 ]
232 ],
233 [
234 undef,
235 [
236 "colB"
237 ],
238 [
239 "colB"
240 ]
241 ],
242 [
243 undef,
244 [
245 {
246 "-desc" => "colB"
247 }
248 ],
249 [
250 [
251 "colB DESC"
252 ]
253 ]
254 ],
255 [
256 "`",
257 [
258 "colB"
259 ],
260 [
261 "`colB`"
262 ]
263 ],
264 [
265 "`",
266 [
267 {
268 "-desc" => "colB"
269 }
270 ],
271 [
272 [
273 "`colB` DESC"
274 ]
275 ]
276 ],
277 [
278 undef,
279 [
280 "colA"
281 ],
282 [
283 "colA"
284 ]
285 ],
286 [
287 undef,
288 [
289 {
290 "-asc" => "colA"
291 }
292 ],
293 [
294 [
295 "colA ASC"
296 ]
297 ]
298 ],
299 [
300 undef,
301 [
302 "colB"
303 ],
304 [
305 "colB"
306 ]
307 ],
308 [
309 undef,
310 [
311 {
312 "-desc" => "colB"
313 }
314 ],
315 [
316 [
317 "colB DESC"
318 ]
319 ]
320 ],
321 [
322 undef,
323 [
324 [
325 {
326 "-asc" => "colA"
327 },
328 {
329 "-desc" => "colB"
330 }
331 ]
332 ],
333 [
334 [
335 "colA ASC"
336 ],
337 [
338 "colB DESC"
339 ]
340 ]
341 ],
342 [
343 "`",
344 [
345 "colA"
346 ],
347 [
348 "`colA`"
349 ]
350 ],
351 [
352 "`",
353 [
354 {
355 "-asc" => "colA"
356 }
357 ],
358 [
359 [
360 "`colA` ASC"
361 ]
362 ]
363 ],
364 [
365 "`",
366 [
367 "colB"
368 ],
369 [
370 "`colB`"
371 ]
372 ],
373 [
374 "`",
375 [
376 {
377 "-desc" => "colB"
378 }
379 ],
380 [
381 [
382 "`colB` DESC"
383 ]
384 ]
385 ],
386 [
387 "`",
388 [
389 [
390 {
391 "-asc" => "colA"
392 },
393 {
394 "-desc" => "colB"
395 }
396 ]
397 ],
398 [
399 [
400 "`colA` ASC"
401 ],
402 [
403 "`colB` DESC"
404 ]
405 ]
406 ],
407 [
408 undef,
409 [
410 "colA"
411 ],
412 [
413 "colA"
414 ]
415 ],
416 [
417 undef,
418 [
419 "colB"
420 ],
421 [
422 "colB"
423 ]
424 ],
425 [
426 undef,
427 [
428 {
429 "-desc" => "colB"
430 }
431 ],
432 [
433 [
434 "colB DESC"
435 ]
436 ]
437 ],
438 [
439 undef,
440 [
441 [
442 "colA",
443 {
444 "-desc" => "colB"
445 }
446 ]
447 ],
448 [
449 "colA",
450 [
451 "colB DESC"
452 ]
453 ]
454 ],
455 [
456 "`",
457 [
458 "colA"
459 ],
460 [
461 "`colA`"
462 ]
463 ],
464 [
465 "`",
466 [
467 "colB"
468 ],
469 [
470 "`colB`"
471 ]
472 ],
473 [
474 "`",
475 [
476 {
477 "-desc" => "colB"
478 }
479 ],
480 [
481 [
482 "`colB` DESC"
483 ]
484 ]
485 ],
486 [
487 "`",
488 [
489 [
490 "colA",
491 {
492 "-desc" => "colB"
493 }
494 ]
495 ],
496 [
497 "`colA`",
498 [
499 "`colB` DESC"
500 ]
501 ]
502 ],
503 [
504 undef,
505 [
506 "colA"
507 ],
508 [
509 "colA"
510 ]
511 ],
512 [
513 undef,
514 [
515 "colB"
516 ],
517 [
518 "colB"
519 ]
520 ],
521 [
522 undef,
523 [
524 [
525 "colA",
526 "colB"
527 ]
528 ],
529 [
530 "colA",
531 "colB"
532 ]
533 ],
534 [
535 undef,
536 [
537 {
538 "-desc" => [
539 "colA",
540 "colB"
541 ]
542 }
543 ],
544 [
545 [
546 "colA DESC"
547 ],
548 [
549 "colB DESC"
550 ]
551 ]
552 ],
553 [
554 undef,
555 [
556 [
557 {
558 "-desc" => [
559 "colA",
560 "colB"
561 ]
562 }
563 ]
564 ],
565 [
566 [
567 "colA DESC"
568 ],
569 [
570 "colB DESC"
571 ]
572 ]
573 ],
574 [
575 "`",
576 [
577 "colA"
578 ],
579 [
580 "`colA`"
581 ]
582 ],
583 [
584 "`",
585 [
586 "colB"
587 ],
588 [
589 "`colB`"
590 ]
591 ],
592 [
593 "`",
594 [
595 [
596 "colA",
597 "colB"
598 ]
599 ],
600 [
601 "`colA`",
602 "`colB`"
603 ]
604 ],
605 [
606 "`",
607 [
608 {
609 "-desc" => [
610 "colA",
611 "colB"
612 ]
613 }
614 ],
615 [
616 [
617 "`colA` DESC"
618 ],
619 [
620 "`colB` DESC"
621 ]
622 ]
623 ],
624 [
625 "`",
626 [
627 [
628 {
629 "-desc" => [
630 "colA",
631 "colB"
632 ]
633 }
634 ]
635 ],
636 [
637 [
638 "`colA` DESC"
639 ],
640 [
641 "`colB` DESC"
642 ]
643 ]
644 ],
645 [
646 undef,
647 [
648 "colA"
649 ],
650 [
651 "colA"
652 ]
653 ],
654 [
655 undef,
656 [
657 "colB"
658 ],
659 [
660 "colB"
661 ]
662 ],
663 [
664 undef,
665 [
666 [
667 "colA",
668 "colB"
669 ]
670 ],
671 [
672 "colA",
673 "colB"
674 ]
675 ],
676 [
677 undef,
678 [
679 {
680 "-desc" => [
681 "colA",
682 "colB"
683 ]
684 }
685 ],
686 [
687 [
688 "colA DESC"
689 ],
690 [
691 "colB DESC"
692 ]
693 ]
694 ],
695 [
696 undef,
697 [
698 "colC"
699 ],
700 [
701 "colC"
702 ]
703 ],
704 [
705 undef,
706 [
707 {
708 "-asc" => "colC"
709 }
710 ],
711 [
712 [
713 "colC ASC"
714 ]
715 ]
716 ],
717 [
718 undef,
719 [
720 [
721 {
722 "-desc" => [
723 "colA",
724 "colB"
725 ]
726 },
727 {
728 "-asc" => "colC"
729 }
730 ]
731 ],
732 [
733 [
734 "colA DESC"
735 ],
736 [
737 "colB DESC"
738 ],
739 [
740 "colC ASC"
741 ]
742 ]
743 ],
744 [
745 "`",
746 [
747 "colA"
748 ],
749 [
750 "`colA`"
751 ]
752 ],
753 [
754 "`",
755 [
756 "colB"
757 ],
758 [
759 "`colB`"
760 ]
761 ],
762 [
763 "`",
764 [
765 [
766 "colA",
767 "colB"
768 ]
769 ],
770 [
771 "`colA`",
772 "`colB`"
773 ]
774 ],
775 [
776 "`",
777 [
778 {
779 "-desc" => [
780 "colA",
781 "colB"
782 ]
783 }
784 ],
785 [
786 [
787 "`colA` DESC"
788 ],
789 [
790 "`colB` DESC"
791 ]
792 ]
793 ],
794 [
795 "`",
796 [
797 "colC"
798 ],
799 [
800 "`colC`"
801 ]
802 ],
803 [
804 "`",
805 [
806 {
807 "-asc" => "colC"
808 }
809 ],
810 [
811 [
812 "`colC` ASC"
813 ]
814 ]
815 ],
816 [
817 "`",
818 [
819 [
820 {
821 "-desc" => [
822 "colA",
823 "colB"
824 ]
825 },
826 {
827 "-asc" => "colC"
828 }
829 ]
830 ],
831 [
832 [
833 "`colA` DESC"
834 ],
835 [
836 "`colB` DESC"
837 ],
838 [
839 "`colC` ASC"
840 ]
841 ]
842 ],
843 [
844 undef,
845 [
846 "colA"
847 ],
848 [
849 "colA"
850 ]
851 ],
852 [
853 undef,
854 [
855 "colB"
856 ],
857 [
858 "colB"
859 ]
860 ],
861 [
862 undef,
863 [
864 [
865 "colA",
866 "colB"
867 ]
868 ],
869 [
870 "colA",
871 "colB"
872 ]
873 ],
874 [
875 undef,
876 [
877 {
878 "-desc" => [
879 "colA",
880 "colB"
881 ]
882 }
883 ],
884 [
885 [
886 "colA DESC"
887 ],
888 [
889 "colB DESC"
890 ]
891 ]
892 ],
893 [
894 undef,
895 [
896 "colC"
897 ],
898 [
899 "colC"
900 ]
901 ],
902 [
903 undef,
904 [
905 "colD"
906 ],
907 [
908 "colD"
909 ]
910 ],
911 [
912 undef,
913 [
914 [
915 "colC",
916 "colD"
917 ]
918 ],
919 [
920 "colC",
921 "colD"
922 ]
923 ],
924 [
925 undef,
926 [
927 {
928 "-asc" => [
929 "colC",
930 "colD"
931 ]
932 }
933 ],
934 [
935 [
936 "colC ASC"
937 ],
938 [
939 "colD ASC"
940 ]
941 ]
942 ],
943 [
944 undef,
945 [
946 [
947 {
948 "-desc" => [
949 "colA",
950 "colB"
951 ]
952 },
953 {
954 "-asc" => [
955 "colC",
956 "colD"
957 ]
958 }
959 ]
960 ],
961 [
962 [
963 "colA DESC"
964 ],
965 [
966 "colB DESC"
967 ],
968 [
969 "colC ASC"
970 ],
971 [
972 "colD ASC"
973 ]
974 ]
975 ],
976 [
977 "`",
978 [
979 "colA"
980 ],
981 [
982 "`colA`"
983 ]
984 ],
985 [
986 "`",
987 [
988 "colB"
989 ],
990 [
991 "`colB`"
992 ]
993 ],
994 [
995 "`",
996 [
997 [
998 "colA",
999 "colB"
1000 ]
1001 ],
1002 [
1003 "`colA`",
1004 "`colB`"
1005 ]
1006 ],
1007 [
1008 "`",
1009 [
1010 {
1011 "-desc" => [
1012 "colA",
1013 "colB"
1014 ]
1015 }
1016 ],
1017 [
1018 [
1019 "`colA` DESC"
1020 ],
1021 [
1022 "`colB` DESC"
1023 ]
1024 ]
1025 ],
1026 [
1027 "`",
1028 [
1029 "colC"
1030 ],
1031 [
1032 "`colC`"
1033 ]
1034 ],
1035 [
1036 "`",
1037 [
1038 "colD"
1039 ],
1040 [
1041 "`colD`"
1042 ]
1043 ],
1044 [
1045 "`",
1046 [
1047 [
1048 "colC",
1049 "colD"
1050 ]
1051 ],
1052 [
1053 "`colC`",
1054 "`colD`"
1055 ]
1056 ],
1057 [
1058 "`",
1059 [
1060 {
1061 "-asc" => [
1062 "colC",
1063 "colD"
1064 ]
1065 }
1066 ],
1067 [
1068 [
1069 "`colC` ASC"
1070 ],
1071 [
1072 "`colD` ASC"
1073 ]
1074 ]
1075 ],
1076 [
1077 "`",
1078 [
1079 [
1080 {
1081 "-desc" => [
1082 "colA",
1083 "colB"
1084 ]
1085 },
1086 {
1087 "-asc" => [
1088 "colC",
1089 "colD"
1090 ]
1091 }
1092 ]
1093 ],
1094 [
1095 [
1096 "`colA` DESC"
1097 ],
1098 [
1099 "`colB` DESC"
1100 ],
1101 [
1102 "`colC` ASC"
1103 ],
1104 [
1105 "`colD` ASC"
1106 ]
1107 ]
1108 ],
1109 [
1110 undef,
1111 [
1112 "colA"
1113 ],
1114 [
1115 "colA"
1116 ]
1117 ],
1118 [
1119 undef,
1120 [
1121 "colB"
1122 ],
1123 [
1124 "colB"
1125 ]
1126 ],
1127 [
1128 undef,
1129 [
1130 [
1131 "colA",
1132 "colB"
1133 ]
1134 ],
1135 [
1136 "colA",
1137 "colB"
1138 ]
1139 ],
1140 [
1141 undef,
1142 [
1143 {
1144 "-desc" => [
1145 "colA",
1146 "colB"
1147 ]
1148 }
1149 ],
1150 [
1151 [
1152 "colA DESC"
1153 ],
1154 [
1155 "colB DESC"
1156 ]
1157 ]
1158 ],
1159 [
1160 undef,
1161 [
1162 "colC"
1163 ],
1164 [
1165 "colC"
1166 ]
1167 ],
1168 [
1169 undef,
1170 [
1171 {
1172 "-desc" => "colC"
1173 }
1174 ],
1175 [
1176 [
1177 "colC DESC"
1178 ]
1179 ]
1180 ],
1181 [
1182 undef,
1183 [
1184 [
1185 {
1186 "-desc" => [
1187 "colA",
1188 "colB"
1189 ]
1190 },
1191 {
1192 "-desc" => "colC"
1193 }
1194 ]
1195 ],
1196 [
1197 [
1198 "colA DESC"
1199 ],
1200 [
1201 "colB DESC"
1202 ],
1203 [
1204 "colC DESC"
1205 ]
1206 ]
1207 ],
1208 [
1209 "`",
1210 [
1211 "colA"
1212 ],
1213 [
1214 "`colA`"
1215 ]
1216 ],
1217 [
1218 "`",
1219 [
1220 "colB"
1221 ],
1222 [
1223 "`colB`"
1224 ]
1225 ],
1226 [
1227 "`",
1228 [
1229 [
1230 "colA",
1231 "colB"
1232 ]
1233 ],
1234 [
1235 "`colA`",
1236 "`colB`"
1237 ]
1238 ],
1239 [
1240 "`",
1241 [
1242 {
1243 "-desc" => [
1244 "colA",
1245 "colB"
1246 ]
1247 }
1248 ],
1249 [
1250 [
1251 "`colA` DESC"
1252 ],
1253 [
1254 "`colB` DESC"
1255 ]
1256 ]
1257 ],
1258 [
1259 "`",
1260 [
1261 "colC"
1262 ],
1263 [
1264 "`colC`"
1265 ]
1266 ],
1267 [
1268 "`",
1269 [
1270 {
1271 "-desc" => "colC"
1272 }
1273 ],
1274 [
1275 [
1276 "`colC` DESC"
1277 ]
1278 ]
1279 ],
1280 [
1281 "`",
1282 [
1283 [
1284 {
1285 "-desc" => [
1286 "colA",
1287 "colB"
1288 ]
1289 },
1290 {
1291 "-desc" => "colC"
1292 }
1293 ]
1294 ],
1295 [
1296 [
1297 "`colA` DESC"
1298 ],
1299 [
1300 "`colB` DESC"
1301 ],
1302 [
1303 "`colC` DESC"
1304 ]
1305 ]
1306 ],
1307 [
1308 undef,
1309 [
1310 "colA"
1311 ],
1312 [
1313 "colA"
1314 ]
1315 ],
1316 [
1317 undef,
1318 [
1319 {
1320 "-asc" => "colA"
1321 }
1322 ],
1323 [
1324 [
1325 "colA ASC"
1326 ]
1327 ]
1328 ],
1329 [
1330 undef,
1331 [
1332 "colB"
1333 ],
1334 [
1335 "colB"
1336 ]
1337 ],
1338 [
1339 undef,
1340 [
1341 [
1342 "colB"
1343 ]
1344 ],
1345 [
1346 "colB"
1347 ]
1348 ],
1349 [
1350 undef,
1351 [
1352 {
1353 "-desc" => [
1354 "colB"
1355 ]
1356 }
1357 ],
1358 [
1359 [
1360 "colB DESC"
1361 ]
1362 ]
1363 ],
1364 [
1365 undef,
1366 [
1367 "colC"
1368 ],
1369 [
1370 "colC"
1371 ]
1372 ],
1373 [
1374 undef,
1375 [
1376 "colD"
1377 ],
1378 [
1379 "colD"
1380 ]
1381 ],
1382 [
1383 undef,
1384 [
1385 [
1386 "colC",
1387 "colD"
1388 ]
1389 ],
1390 [
1391 "colC",
1392 "colD"
1393 ]
1394 ],
1395 [
1396 undef,
1397 [
1398 {
1399 "-asc" => [
1400 "colC",
1401 "colD"
1402 ]
1403 }
1404 ],
1405 [
1406 [
1407 "colC ASC"
1408 ],
1409 [
1410 "colD ASC"
1411 ]
1412 ]
1413 ],
1414 [
1415 undef,
1416 [
1417 [
1418 {
1419 "-asc" => "colA"
1420 },
1421 {
1422 "-desc" => [
1423 "colB"
1424 ]
1425 },
1426 {
1427 "-asc" => [
1428 "colC",
1429 "colD"
1430 ]
1431 }
1432 ]
1433 ],
1434 [
1435 [
1436 "colA ASC"
1437 ],
1438 [
1439 "colB DESC"
1440 ],
1441 [
1442 "colC ASC"
1443 ],
1444 [
1445 "colD ASC"
1446 ]
1447 ]
1448 ],
1449 [
1450 "`",
1451 [
1452 "colA"
1453 ],
1454 [
1455 "`colA`"
1456 ]
1457 ],
1458 [
1459 "`",
1460 [
1461 {
1462 "-asc" => "colA"
1463 }
1464 ],
1465 [
1466 [
1467 "`colA` ASC"
1468 ]
1469 ]
1470 ],
1471 [
1472 "`",
1473 [
1474 "colB"
1475 ],
1476 [
1477 "`colB`"
1478 ]
1479 ],
1480 [
1481 "`",
1482 [
1483 [
1484 "colB"
1485 ]
1486 ],
1487 [
1488 "`colB`"
1489 ]
1490 ],
1491 [
1492 "`",
1493 [
1494 {
1495 "-desc" => [
1496 "colB"
1497 ]
1498 }
1499 ],
1500 [
1501 [
1502 "`colB` DESC"
1503 ]
1504 ]
1505 ],
1506 [
1507 "`",
1508 [
1509 "colC"
1510 ],
1511 [
1512 "`colC`"
1513 ]
1514 ],
1515 [
1516 "`",
1517 [
1518 "colD"
1519 ],
1520 [
1521 "`colD`"
1522 ]
1523 ],
1524 [
1525 "`",
1526 [
1527 [
1528 "colC",
1529 "colD"
1530 ]
1531 ],
1532 [
1533 "`colC`",
1534 "`colD`"
1535 ]
1536 ],
1537 [
1538 "`",
1539 [
1540 {
1541 "-asc" => [
1542 "colC",
1543 "colD"
1544 ]
1545 }
1546 ],
1547 [
1548 [
1549 "`colC` ASC"
1550 ],
1551 [
1552 "`colD` ASC"
1553 ]
1554 ]
1555 ],
1556 [
1557 "`",
1558 [
1559 [
1560 {
1561 "-asc" => "colA"
1562 },
1563 {
1564 "-desc" => [
1565 "colB"
1566 ]
1567 },
1568 {
1569 "-asc" => [
1570 "colC",
1571 "colD"
1572 ]
1573 }
1574 ]
1575 ],
1576 [
1577 [
1578 "`colA` ASC"
1579 ],
1580 [
1581 "`colB` DESC"
1582 ],
1583 [
1584 "`colC` ASC"
1585 ],
1586 [
1587 "`colD` ASC"
1588 ]
1589 ]
1590 ],
1591 [
1592 undef,
1593 [
1594 \[
1595 "colA LIKE ?",
1596 "test"
1597 ]
1598 ],
1599 [
1600 [
1601 "colA LIKE ?",
1602 "test"
1603 ]
1604 ]
1605 ],
1606 [
1607 undef,
1608 [
1609 {
1610 "-desc" => \[
1611 "colA LIKE ?",
1612 "test"
1613 ]
1614 }
1615 ],
1616 [
1617 [
1618 "colA LIKE ? DESC",
1619 "test"
1620 ]
1621 ]
1622 ],
1623 [
1624 "`",
1625 [
1626 \[
1627 "colA LIKE ?",
1628 "test"
1629 ]
1630 ],
1631 [
1632 [
1633 "colA LIKE ?",
1634 "test"
1635 ]
1636 ]
1637 ],
1638 [
1639 "`",
1640 [
1641 {
1642 "-desc" => \[
1643 "colA LIKE ?",
1644 "test"
1645 ]
1646 }
1647 ],
1648 [
1649 [
1650 "colA LIKE ? DESC",
1651 "test"
1652 ]
1653 ]
1654 ],
1655 [
1656 undef,
1657 [
1658 \[
1659 "colA LIKE ? DESC",
1660 "test"
1661 ]
1662 ],
1663 [
1664 [
1665 "colA LIKE ? DESC",
1666 "test"
1667 ]
1668 ]
1669 ],
1670 [
1671 "`",
1672 [
1673 \[
1674 "colA LIKE ? DESC",
1675 "test"
1676 ]
1677 ],
1678 [
1679 [
1680 "colA LIKE ? DESC",
1681 "test"
1682 ]
1683 ]
1684 ],
1685 [
1686 undef,
1687 [
1688 \[
1689 "colA"
1690 ]
1691 ],
1692 [
1693 [
1694 "colA"
1695 ]
1696 ]
1697 ],
1698 [
1699 undef,
1700 [
1701 {
1702 "-asc" => \[
1703 "colA"
1704 ]
1705 }
1706 ],
1707 [
1708 [
1709 "colA ASC"
1710 ]
1711 ]
1712 ],
1713 [
1714 undef,
1715 [
1716 \[
1717 "colB LIKE ?",
1718 "test"
1719 ]
1720 ],
1721 [
1722 [
1723 "colB LIKE ?",
1724 "test"
1725 ]
1726 ]
1727 ],
1728 [
1729 undef,
1730 [
1731 {
1732 "-desc" => \[
1733 "colB LIKE ?",
1734 "test"
1735 ]
1736 }
1737 ],
1738 [
1739 [
1740 "colB LIKE ? DESC",
1741 "test"
1742 ]
1743 ]
1744 ],
1745 [
1746 undef,
1747 [
1748 \[
1749 "colC LIKE ?",
1750 "tost"
1751 ]
1752 ],
1753 [
1754 [
1755 "colC LIKE ?",
1756 "tost"
1757 ]
1758 ]
1759 ],
1760 [
1761 undef,
1762 [
1763 {
1764 "-asc" => \[
1765 "colC LIKE ?",
1766 "tost"
1767 ]
1768 }
1769 ],
1770 [
1771 [
1772 "colC LIKE ? ASC",
1773 "tost"
1774 ]
1775 ]
1776 ],
1777 [
1778 undef,
1779 [
1780 [
1781 {
1782 "-asc" => \[
1783 "colA"
1784 ]
1785 },
1786 {
1787 "-desc" => \[
1788 "colB LIKE ?",
1789 "test"
1790 ]
1791 },
1792 {
1793 "-asc" => \[
1794 "colC LIKE ?",
1795 "tost"
1796 ]
1797 }
1798 ]
1799 ],
1800 [
1801 [
1802 "colA ASC"
1803 ],
1804 [
1805 "colB LIKE ? DESC",
1806 "test"
1807 ],
1808 [
1809 "colC LIKE ? ASC",
1810 "tost"
1811 ]
1812 ]
1813 ],
1814 [
1815 "`",
1816 [
1817 \[
1818 "colA"
1819 ]
1820 ],
1821 [
1822 [
1823 "colA"
1824 ]
1825 ]
1826 ],
1827 [
1828 "`",
1829 [
1830 {
1831 "-asc" => \[
1832 "colA"
1833 ]
1834 }
1835 ],
1836 [
1837 [
1838 "colA ASC"
1839 ]
1840 ]
1841 ],
1842 [
1843 "`",
1844 [
1845 \[
1846 "colB LIKE ?",
1847 "test"
1848 ]
1849 ],
1850 [
1851 [
1852 "colB LIKE ?",
1853 "test"
1854 ]
1855 ]
1856 ],
1857 [
1858 "`",
1859 [
1860 {
1861 "-desc" => \[
1862 "colB LIKE ?",
1863 "test"
1864 ]
1865 }
1866 ],
1867 [
1868 [
1869 "colB LIKE ? DESC",
1870 "test"
1871 ]
1872 ]
1873 ],
1874 [
1875 "`",
1876 [
1877 \[
1878 "colC LIKE ?",
1879 "tost"
1880 ]
1881 ],
1882 [
1883 [
1884 "colC LIKE ?",
1885 "tost"
1886 ]
1887 ]
1888 ],
1889 [
1890 "`",
1891 [
1892 {
1893 "-asc" => \[
1894 "colC LIKE ?",
1895 "tost"
1896 ]
1897 }
1898 ],
1899 [
1900 [
1901 "colC LIKE ? ASC",
1902 "tost"
1903 ]
1904 ]
1905 ],
1906 [
1907 "`",
1908 [
1909 [
1910 {
1911 "-asc" => \[
1912 "colA"
1913 ]
1914 },
1915 {
1916 "-desc" => \[
1917 "colB LIKE ?",
1918 "test"
1919 ]
1920 },
1921 {
1922 "-asc" => \[
1923 "colC LIKE ?",
1924 "tost"
1925 ]
1926 }
1927 ]
1928 ],
1929 [
1930 [
1931 "colA ASC"
1932 ],
1933 [
1934 "colB LIKE ? DESC",
1935 "test"
1936 ],
1937 [
1938 "colC LIKE ? ASC",
1939 "tost"
1940 ]
1941 ],
1942 ],
1943 [
1944 undef,
1945 [{}],
1946 [],
1947 ],
1948);
1949
1950for my $case (@cases) {
1951 my ($quote, $expr, $out) = @$case;
1952 my $sqla = SQL::Abstract->new({ quote_char => $quote });
1953
1954 if (
1955 @$expr == 1
1956 and ref($expr->[0]) eq 'REF'
1957 and ref(${$expr->[0]}) eq 'ARRAY'
1958 and @${$expr->[0]} == 1
1959 ) {
1960 # \[ 'foo' ] is exactly equivalent to \'foo' and the new code knows that
1961 $out = $out->[0];
1962 }
1963
1964 my @chunks = $sqla->_order_by_chunks($expr);
1965
1966 unless (is(Dumper(\@chunks), Dumper($out))) {
1967 diag("Above failure from expr: ".Dumper($expr));
1968 }
1969}
1970
1971done_testing;