1
+ package org.partiql.benchmarks.compiler
2
+
3
+ import org.partiql_v1_0_0_perf_1.value.CollectionValue
4
+ import org.partiql_v1_0_0_perf_1.eval.PartiQLEngine
5
+ import org.partiql_v1_0_0_perf_1.eval.PartiQLResult
6
+ import org.partiql_v1_0_0_perf_1.parser.PartiQLParser
7
+ import org.partiql_v1_0_0_perf_1.planner.PartiQLPlanner
8
+ import org.partiql_v1_0_0_perf_1.plugins.memory.MemoryCatalog
9
+ import org.partiql_v1_0_0_perf_1.plugins.memory.MemoryConnector
10
+ import org.partiql_v1_0_0_perf_1.spi.connector.ConnectorSession
11
+ import org.partiql_v1_0_0_perf_1.value.PartiQLValueExperimental
12
+
13
+ class CompilerV1_0_0_Perf_1 : Compiler {
14
+
15
+ private val parser = PartiQLParser .builder().build()
16
+
17
+ private val planner = PartiQLPlanner .builder().build()
18
+
19
+ private val evaluator = PartiQLEngine .builder().build()
20
+
21
+ @OptIn(PartiQLValueExperimental ::class , org.partiql.value.PartiQLValueExperimental ::class )
22
+ override fun compile (query : String ): Iterable <Any > {
23
+ val parseResult = parser.parse(query)
24
+ val catalogName = " default"
25
+ val catalog = MemoryCatalog .builder().name(catalogName)
26
+ val connector = MemoryConnector (catalog.build())
27
+ val queryId = " q"
28
+ val userId = " u"
29
+ val connectorSession = object : ConnectorSession {
30
+ override fun getQueryId (): String = queryId
31
+ override fun getUserId (): String = userId
32
+ }
33
+ val engineSession = PartiQLEngine .Session (mapOf (catalogName to connector))
34
+ val plannerSession = PartiQLPlanner .Session (queryId, userId, catalogName, catalogs = mapOf (catalogName to connector.getMetadata(connectorSession)))
35
+ val planResult = planner.plan(parseResult.root, plannerSession)
36
+ val statement = evaluator.prepare(planResult.plan, engineSession)
37
+ val value = evaluator.execute(statement) as PartiQLResult .Value
38
+ return value.value as CollectionValue <* >
39
+ }
40
+ }
0 commit comments