@@ -1093,4 +1093,89 @@ private static Consumer<List> mongoChecker(final String... expected) {
10931093 "POP_A=17522" ,
10941094 "POP_A=22576" );
10951095 }
1096+
1097+ /** Test case for
1098+ * <a href="https://issues.apache.org/jira/browse/CALCITE-7413">[CALCITE-7413]
1099+ * Add Concat and Substring function (enabled in Mongodb library)</a>. */
1100+ @ Test void testConcat () {
1101+ assertModel (MODEL )
1102+ .query ("SELECT city || ' ' || state from zips"
1103+ + " order by pop" )
1104+ .limit (3 )
1105+ .queryContains (
1106+ mongoChecker (
1107+ "{$project: {EXPR$0:{$concat:[{$concat:['$city',{$literal: ' '}]},'$state']},POP:'$pop'}}" ,
1108+ "{$sort:{POP:1}}" ))
1109+ .returnsOrdered ("EXPR$0=PENTAGON DC" ,
1110+ "EXPR$0=BRATTLEBORO VT" ,
1111+ "EXPR$0=RUTLAND VT" );
1112+ }
1113+
1114+ /** Test case for
1115+ * <a href="https://issues.apache.org/jira/browse/CALCITE-7413">[CALCITE-7413]
1116+ * Add Concat and Substring function (enabled in Mongodb library)</a>. */
1117+ @ Test void testAliasNameConcat () {
1118+ assertModel (MODEL )
1119+ .query ("SELECT city || ' ' || state AS full_name from zips"
1120+ + " order by pop" )
1121+ .limit (3 )
1122+ .queryContains (
1123+ mongoChecker (
1124+ "{$project: {FULL_NAME:{$concat:[{$concat:['$city',{$literal: ' '}]},'$state']},POP:'$pop'}}" ,
1125+ "{$sort:{POP:1}}" ))
1126+ .returnsOrdered ("FULL_NAME=PENTAGON DC" ,
1127+ "FULL_NAME=BRATTLEBORO VT" ,
1128+ "FULL_NAME=RUTLAND VT" );
1129+ }
1130+
1131+ /** Test case for
1132+ * <a href="https://issues.apache.org/jira/browse/CALCITE-7413">[CALCITE-7413]
1133+ * Add Concat and Substring function (enabled in Mongodb library)</a>. */
1134+ @ Test void testAliasNameMultipleConcat () {
1135+ assertModel (MODEL )
1136+ .query ("SELECT city || ',' || ',' || state AS full_name from zips"
1137+ + " order by pop" )
1138+ .limit (3 )
1139+ .queryContains (
1140+ mongoChecker (
1141+ "{$project:{FULL_NAME:{$concat:[{$concat:[{$concat:['$city',{$literal:','}]},{$literal:','}]},'$state']},POP:'$pop'}}" ,
1142+ "{$sort:{POP:1}}" ))
1143+ .returnsOrdered ("FULL_NAME=PENTAGON,,DC" ,
1144+ "FULL_NAME=BRATTLEBORO,,VT" ,
1145+ "FULL_NAME=RUTLAND,,VT" );
1146+ }
1147+
1148+ /** Test case for
1149+ * <a href="https://issues.apache.org/jira/browse/CALCITE-7413">[CALCITE-7413]
1150+ * Add Concat and Substring function (enabled in Mongodb library)</a>. */
1151+ @ Test void testSubstring () {
1152+ assertModel (MODEL )
1153+ .query ("SELECT SUBSTRING(city FROM 1 FOR 2) from zips"
1154+ + " order by pop" )
1155+ .limit (3 )
1156+ .queryContains (
1157+ mongoChecker (
1158+ "{$project:{EXPR$0:{$substrCP:['$city',{$literal:1},{$literal:2}]},POP:'$pop'}}" ,
1159+ "{$sort:{POP:1}}" ))
1160+ .returnsOrdered ("EXPR$0=EN" ,
1161+ "EXPR$0=RA" ,
1162+ "EXPR$0=UT" );
1163+ }
1164+
1165+ /** Test case for
1166+ * <a href="https://issues.apache.org/jira/browse/CALCITE-7413">[CALCITE-7413]
1167+ * Add Concat and Substring function (enabled in Mongodb library)</a>. */
1168+ @ Test void testAliasNameSubstring () {
1169+ assertModel (MODEL )
1170+ .query ("SELECT SUBSTRING(city FROM 1 FOR 2) AS city_substring from zips"
1171+ + " order by pop" )
1172+ .limit (3 )
1173+ .queryContains (
1174+ mongoChecker (
1175+ "{$project:{CITY_SUBSTRING:{$substrCP:['$city',{$literal:1},{$literal:2}]},POP:'$pop'}}" ,
1176+ "{$sort:{POP:1}}" ))
1177+ .returnsOrdered ("CITY_SUBSTRING=EN" ,
1178+ "CITY_SUBSTRING=RA" ,
1179+ "CITY_SUBSTRING=UT" );
1180+ }
10961181}
0 commit comments