@@ -15,6 +15,7 @@ import org.partiql.value.boolValue
15
15
import org.partiql.value.int32Value
16
16
import org.partiql.value.io.PartiQLValueIonWriterBuilder
17
17
import org.partiql.value.nullValue
18
+ import org.partiql.value.stringValue
18
19
import org.partiql.value.structValue
19
20
import java.io.ByteArrayOutputStream
20
21
import kotlin.test.assertEquals
@@ -112,10 +113,12 @@ class PartiQLEngineDefaultTest {
112
113
fun testJoinOuterFull () {
113
114
val statement =
114
115
parser.parse(" SELECT a, b FROM << { 'a': 1 } >> t FULL OUTER JOIN << { 'b': 2 } >> s ON false;" ).root
116
+
115
117
val session = PartiQLPlanner .Session (" q" , " u" )
116
118
val plan = planner.plan(statement, session)
117
119
118
120
val prepared = engine.prepare(plan.plan)
121
+
119
122
val result = engine.execute(prepared)
120
123
if (result is PartiQLResult .Error ) {
121
124
throw result.cause
@@ -136,6 +139,30 @@ class PartiQLEngineDefaultTest {
136
139
assertEquals(expected, output, comparisonString(expected, output))
137
140
}
138
141
142
+ @OptIn(PartiQLValueExperimental ::class )
143
+ @Test
144
+ fun testCaseLiteral00 () {
145
+ val source = """
146
+ CASE
147
+ WHEN NULL THEN 'isNull'
148
+ WHEN MISSING THEN 'isMissing'
149
+ WHEN FALSE THEN 'isFalse'
150
+ WHEN TRUE THEN 'isTrue'
151
+ END
152
+ ;
153
+ """ .trimIndent()
154
+ val statement = parser.parse(source).root
155
+ val session = PartiQLPlanner .Session (" q" , " u" )
156
+ val plan = planner.plan(statement, session)
157
+
158
+ val prepared = engine.prepare(plan.plan)
159
+ val result = engine.execute(prepared) as PartiQLResult .Value
160
+ val output = result.value
161
+
162
+ val expected = stringValue(" isTrue" )
163
+ assertEquals(expected, output)
164
+ }
165
+
139
166
@OptIn(PartiQLValueExperimental ::class )
140
167
@Test
141
168
fun testJoinOuterFullOnTrue () {
@@ -161,6 +188,30 @@ class PartiQLEngineDefaultTest {
161
188
assertEquals(expected, output, comparisonString(expected, output))
162
189
}
163
190
191
+ @OptIn(PartiQLValueExperimental ::class )
192
+ @Test
193
+ fun testCaseLiteral01 () {
194
+ val source = """
195
+ CASE
196
+ WHEN NULL THEN 'isNull'
197
+ WHEN MISSING THEN 'isMissing'
198
+ WHEN FALSE THEN 'isFalse'
199
+ END
200
+ ;
201
+ """ .trimIndent()
202
+ val statement = parser.parse(source).root
203
+ val session = PartiQLPlanner .Session (" q" , " u" )
204
+ val plan = planner.plan(statement, session)
205
+
206
+ val prepared = engine.prepare(plan.plan)
207
+
208
+ val result = engine.execute(prepared) as PartiQLResult .Value
209
+ val output = result.value
210
+
211
+ val expected = nullValue()
212
+ assertEquals(expected, output)
213
+ }
214
+
164
215
@OptIn(PartiQLValueExperimental ::class )
165
216
private fun comparisonString (expected : PartiQLValue , actual : PartiQLValue ): String {
166
217
val expectedBuffer = ByteArrayOutputStream ()
@@ -173,4 +224,53 @@ class PartiQLEngineDefaultTest {
173
224
appendLine(" Actual : $expectedBuffer " )
174
225
}
175
226
}
227
+
228
+ @Disabled(" This is disabled because FN EQUALS is not yet implemented." )
229
+ @OptIn(PartiQLValueExperimental ::class )
230
+ @Test
231
+ fun testCaseLiteral02 () {
232
+ val source = """
233
+ CASE (1)
234
+ WHEN NULL THEN 'isNull'
235
+ WHEN MISSING THEN 'isMissing'
236
+ WHEN 2 THEN 'isTwo'
237
+ WHEN 1 THEN 'isOne'
238
+ END
239
+ ;
240
+ """ .trimIndent()
241
+ val statement = parser.parse(source).root
242
+ val session = PartiQLPlanner .Session (" q" , " u" )
243
+ val plan = planner.plan(statement, session)
244
+
245
+ val prepared = engine.prepare(plan.plan)
246
+ val result = engine.execute(prepared) as PartiQLResult .Value
247
+ val output = result.value
248
+
249
+ val expected = stringValue(" isOne" )
250
+ assertEquals(expected, output)
251
+ }
252
+
253
+ @Disabled(" This is disabled because FN EQUALS is not yet implemented." )
254
+ @OptIn(PartiQLValueExperimental ::class )
255
+ @Test
256
+ fun testCaseLiteral03 () {
257
+ val source = """
258
+ CASE (1)
259
+ WHEN NULL THEN 'isNull'
260
+ WHEN MISSING THEN 'isMissing'
261
+ WHEN 2 THEN 'isTwo'
262
+ END
263
+ ;
264
+ """ .trimIndent()
265
+ val statement = parser.parse(source).root
266
+ val session = PartiQLPlanner .Session (" q" , " u" )
267
+ val plan = planner.plan(statement, session)
268
+
269
+ val prepared = engine.prepare(plan.plan)
270
+ val result = engine.execute(prepared) as PartiQLResult .Value
271
+ val output = result.value
272
+
273
+ val expected = nullValue()
274
+ assertEquals(expected, output)
275
+ }
176
276
}
0 commit comments