Commit | Line | Data |
497e9bed |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | use Test::Exception; |
5 | use Data::Dumper::Concise; |
6 | |
7 | use SQL::Abstract; |
8 | |
9 | use SQL::Abstract::Test import => ['is_same_sql_bind']; |
10 | my @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 | |
1950 | for 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 | |
1971 | done_testing; |