Skip to content

Commit

Permalink
Merge pull request #1323 from partiql/metadata-move
Browse files Browse the repository at this point in the history
  • Loading branch information
RCHowell authored Dec 21, 2023
2 parents acec206 + dfb0c23 commit f9b52ca
Show file tree
Hide file tree
Showing 16 changed files with 111 additions and 109 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ Thank you to all who have contributed!
## [Unreleased]

### Added
- Adds the ability to pass a user-defined-function signature to the planner.
- Adds the ability to define a user-defined-function in ConnectorMetadata
- Move ConnectorMetadata map from PartiQLPlanner to PartiQLPlanner.Session for planner re-use.

### Changed

Expand All @@ -42,7 +43,7 @@ Thank you to all who have contributed!

### Contributors
Thank you to all who have contributed!
- @<your-username>
- @rchowell

## [0.14.0-alpha] - 2023-12-15

Expand Down
9 changes: 4 additions & 5 deletions partiql-cli/src/main/kotlin/org/partiql/cli/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,8 @@ object Debug {

private val root = Paths.get(System.getProperty("user.home")).resolve(".partiql/local")

private val planner = PartiQLPlanner.builder()
.catalogs(
"local" to LocalConnector.Metadata(root)
)
.build()
private val parser = PartiQLParser.default()
private val planner = PartiQLPlanner.default()

// !!
// IMPLEMENT DEBUG BEHAVIOR HERE
Expand All @@ -76,6 +72,9 @@ object Debug {
val sess = PartiQLPlanner.Session(
queryId = UUID.randomUUID().toString(),
userId = "debug",
catalogs = mapOf(
"local" to LocalConnector.Metadata(root)
)
)
val result = planner.plan(statement, sess).plan
out.info("-- Plan ----------")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import org.partiql.ast.Statement
import org.partiql.errors.Problem
import org.partiql.errors.ProblemCallback
import org.partiql.plan.PartiQLPlan
import org.partiql.spi.connector.ConnectorMetadata
import java.time.Instant

/**
Expand Down Expand Up @@ -45,6 +46,7 @@ public interface PartiQLPlanner {
public val userId: String,
public val currentCatalog: String? = null,
public val currentDirectory: List<String> = emptyList(),
public val catalogs: Map<String, ConnectorMetadata> = emptyMap(),
public val instant: Instant = Instant.now(),
)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,82 +1,41 @@
package org.partiql.planner

import org.partiql.spi.connector.ConnectorMetadata
import org.partiql.types.function.FunctionSignature

/**
* PartiQLPlannerBuilder is used to programmatically construct a [PartiQLPlanner] implementation.
*
* Usage:
* PartiQLPlanner.builder()
* .addCatalog("foo", FooConnector())
* .addCatalog("bar", BarConnector())
* .builder()
* .addPass(myPass)
* .build()
*/
public class PartiQLPlannerBuilder {

private var fns: MutableList<FunctionSignature.Scalar> = mutableListOf()
private var catalogs: MutableMap<String, ConnectorMetadata> = mutableMapOf()
private var passes: List<PartiQLPlannerPass> = emptyList()
private val passes: MutableList<PartiQLPlannerPass> = mutableListOf()

/**
* Build the builder, return an implementation of a [PartiQLPlanner].
*
* @return
*/
public fun build(): PartiQLPlanner {
val headers = mutableListOf<Header>(PartiQLHeader)
if (fns.isNotEmpty()) {
val h = object : Header() {
override val namespace: String = "UDF"
override val functions = fns
}
headers.add(h)
}
return PartiQLPlannerDefault(headers, catalogs, passes)
}

/**
* Java style method for assigning a Catalog name to [ConnectorMetadata].
*
* @param catalog
* @param metadata
* @return
*/
public fun addCatalog(catalog: String, metadata: ConnectorMetadata): PartiQLPlannerBuilder = this.apply {
this.catalogs[catalog] = metadata
}

/**
* Kotlin style method for assigning Catalog names to [ConnectorMetadata].
*
* @param catalogs
* @return
*/
public fun catalogs(vararg catalogs: Pair<String, ConnectorMetadata>): PartiQLPlannerBuilder = this.apply {
this.catalogs = mutableMapOf(*catalogs)
}
public fun build(): PartiQLPlanner = PartiQLPlannerDefault(passes)

/**
* Java style method for adding a user-defined-function.
* Java style method for adding a planner pass to this planner builder.
*
* @param function
* @param pass
* @return
*/
public fun addFunction(function: FunctionSignature.Scalar): PartiQLPlannerBuilder = this.apply {
this.fns.add(function)
public fun addPass(pass: PartiQLPlannerPass): PartiQLPlannerBuilder = this.apply {
this.passes.add(pass)
}

/**
* Kotlin style method for setting the user-defined functions. This replaces all existing user-defined functions previously passed to the builder.
* Kotlin style method for adding a list of planner passes to this planner builder.
*
* @param function
* @param passes
* @return
*/
public fun functions(vararg functions: FunctionSignature.Scalar): PartiQLPlannerBuilder = this.apply {
this.fns = mutableListOf(*functions)
}

public fun passes(passes: List<PartiQLPlannerPass>): PartiQLPlannerBuilder = this.apply {
this.passes = passes
public fun addPasses(vararg passes: PartiQLPlannerPass): PartiQLPlannerBuilder = this.apply {
this.passes.addAll(passes)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ import org.partiql.planner.internal.ir.PartiQLVersion
import org.partiql.planner.internal.transforms.AstToPlan
import org.partiql.planner.internal.transforms.PlanTransform
import org.partiql.planner.internal.typer.PlanTyper
import org.partiql.spi.connector.ConnectorMetadata

/**
* Default PartiQL logical query planner.
*/
internal class PartiQLPlannerDefault(
private val headers: List<Header>,
private val catalogs: Map<String, ConnectorMetadata>,
private val passes: List<PartiQLPlannerPass>,
) : PartiQLPlanner {

Expand All @@ -24,8 +21,9 @@ internal class PartiQLPlannerDefault(
session: PartiQLPlanner.Session,
onProblem: ProblemCallback,
): PartiQLPlanner.Result {

// 0. Initialize the planning environment
val env = Env(headers, catalogs, session)
val env = Env(session)

// 1. Normalize
val ast = statement.normalize()
Expand Down
50 changes: 37 additions & 13 deletions partiql-planner/src/main/kotlin/org/partiql/planner/internal/Env.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.partiql.planner.internal

import org.partiql.planner.Header
import org.partiql.planner.PartiQLPlanner
import org.partiql.planner.internal.ir.Agg
import org.partiql.planner.internal.ir.Catalog
Expand All @@ -20,6 +19,7 @@ import org.partiql.spi.connector.ConnectorSession
import org.partiql.types.StaticType
import org.partiql.types.StructType
import org.partiql.types.TupleConstraint
import org.partiql.types.function.FunctionSignature

/**
* Handle for associating a catalog name with catalog related metadata objects.
Expand Down Expand Up @@ -102,7 +102,7 @@ internal sealed interface ResolvedVar {
override val type: StaticType,
override val ordinal: Int,
override val depth: Int,
val position: Int
val position: Int,
) : ResolvedVar
}

Expand All @@ -122,13 +122,9 @@ internal enum class ResolutionStrategy {
/**
* PartiQL Planner Global Environment of Catalogs backed by given plugins.
*
* @property headers List of namespaced definitions
* @property catalogs List of plugins for global resolution
* @property session Session details
*/
internal class Env(
private val headers: List<Header>,
private val connectors: Map<String, ConnectorMetadata>,
private val session: PartiQLPlanner.Session,
) {

Expand All @@ -137,24 +133,44 @@ internal class Env(
*/
public val catalogs = mutableListOf<Catalog>()

/**
* Catalog Metadata for this query session.
*/
private val connectors = session.catalogs

/**
* Encapsulate all function resolving logic within [FnResolver].
*
* TODO we should be using a search_path for resolving functions. This is not possible at the moment, so we flatten
* all builtin functions to live at the top-level. At the moment, we could technically use this to have
* single-level `catalog`.`function`() syntax but that is out-of-scope for this commit.
*/
public val fnResolver = FnResolver(headers)
public val fnResolver = FnResolver(object : Header() {

override val namespace: String = "builtins"

override val functions: List<FunctionSignature.Scalar> =
PartiQLHeader.functions + connectors.values.flatMap { it.functions }

override val operators: List<FunctionSignature.Scalar> =
PartiQLHeader.operators + connectors.values.flatMap { it.operators }

override val aggregations: List<FunctionSignature.Aggregation> =
PartiQLHeader.aggregations + connectors.values.flatMap { it.aggregations }
})

private val connectorSession = object : ConnectorSession {
override fun getQueryId(): String = session.queryId
override fun getUserId(): String = session.userId
}

/**
* Leverages a [FunctionResolver] to find a matching function defined in the [Header] scalar function catalog.
* Leverages a [FnResolver] to find a matching function defined in the [Header] scalar function catalog.
*/
internal fun resolveFn(fn: Fn.Unresolved, args: List<Rex>) = fnResolver.resolveFn(fn, args)

/**
* Leverages a [FunctionResolver] to find a matching function defined in the [Header] aggregation function catalog.
* Leverages a [FnResolver] to find a matching function defined in the [Header] aggregation function catalog.
*/
internal fun resolveAgg(agg: Agg.Unresolved, args: List<Rex>) = fnResolver.resolveAgg(agg, args)

Expand Down Expand Up @@ -213,7 +229,11 @@ internal class Env(
getObjectHandle(cat, catalogPath)?.let { handle ->
getObjectDescriptor(handle).let { type ->
val depth = calculateMatched(originalPath, catalogPath, handle.second.absolutePath)
val (catalogIndex, valueIndex) = getOrAddCatalogValue(handle.first, handle.second.absolutePath.steps, type)
val (catalogIndex, valueIndex) = getOrAddCatalogValue(
handle.first,
handle.second.absolutePath.steps,
type
)
// Return resolution metadata
ResolvedVar.Global(type, catalogIndex, depth, valueIndex)
}
Expand All @@ -224,7 +244,11 @@ internal class Env(
/**
* @return a [Pair] where [Pair.first] is the catalog index and [Pair.second] is the value index within that catalog
*/
private fun getOrAddCatalogValue(catalogName: String, valuePath: List<String>, valueType: StaticType): Pair<Int, Int> {
private fun getOrAddCatalogValue(
catalogName: String,
valuePath: List<String>,
valueType: StaticType,
): Pair<Int, Int> {
val catalogIndex = getOrAddCatalog(catalogName)
val symbols = catalogs[catalogIndex].symbols
return symbols.indexOfFirst { value ->
Expand Down Expand Up @@ -388,7 +412,7 @@ internal class Env(
*/
private class ResolvedPath(
val replacementPath: BindingPath,
val resolvedType: StaticType
val resolvedType: StaticType,
)

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.partiql.planner
package org.partiql.planner.internal

import org.partiql.planner.internal.typer.TypeLattice
import org.partiql.types.function.FunctionParameter
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.partiql.planner
package org.partiql.planner.internal

import org.partiql.ast.DatetimeField
import org.partiql.types.function.FunctionParameter
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.partiql.planner.internal.typer

import org.partiql.planner.Header
import org.partiql.planner.internal.Header
import org.partiql.planner.internal.ir.Agg
import org.partiql.planner.internal.ir.Fn
import org.partiql.planner.internal.ir.Identifier
Expand Down Expand Up @@ -109,7 +109,7 @@ internal sealed class FnMatch<T : FunctionSignature> {
* at the moment to keep that information (derived from the current TypeLattice) with the [FnResolver].
*/
@OptIn(PartiQLValueExperimental::class)
internal class FnResolver(private val headers: List<Header>) {
internal class FnResolver(private val header: Header) {

/**
* All headers use the same type lattice (we don't have a design for plugging type systems at the moment).
Expand Down Expand Up @@ -140,10 +140,10 @@ internal class FnResolver(private val headers: List<Header>) {
val (casts, unsafeCasts) = casts()
unsafeCastSet = unsafeCasts
// combine all header definitions
val fns = headers.flatMap { it.functions }
val fns = header.functions
functions = fns.toFnMap()
operators = (headers.flatMap { it.operators } + casts).toFnMap()
aggregations = headers.flatMap { it.aggregations }.toFnMap()
operators = (header.operators + casts).toFnMap()
aggregations = header.aggregations.toFnMap()
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package org.partiql.planner

import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test
import org.partiql.planner.internal.PartiQLHeader

class HeaderTest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package org.partiql.planner.internal
import org.junit.jupiter.api.Assertions.assertNull
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.partiql.planner.PartiQLHeader
import org.partiql.planner.PartiQLPlanner
import org.partiql.planner.internal.ir.Catalog
import org.partiql.planner.internal.ir.Rex
Expand Down Expand Up @@ -38,15 +37,14 @@ class EnvTest {
@BeforeEach
fun init() {
env = Env(
listOf(PartiQLHeader),
mapOf(
"pql" to LocalConnector.Metadata(root)
),
PartiQLPlanner.Session(
queryId = Random().nextInt().toString(),
userId = "test-user",
currentCatalog = "pql",
currentDirectory = listOf("main"),
catalogs = mapOf(
"pql" to LocalConnector.Metadata(root)
),
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ package org.partiql.planner.internal.typer

import org.junit.jupiter.api.Test
import org.junit.jupiter.api.fail
import org.partiql.planner.Header
import org.partiql.planner.PartiQLHeader
import org.partiql.planner.internal.Header
import org.partiql.types.function.FunctionParameter
import org.partiql.types.function.FunctionSignature
import org.partiql.value.PartiQLValueExperimental
Expand Down Expand Up @@ -67,7 +66,7 @@ class FunctionResolverTest {
)
}

private val resolver = FnResolver(listOf(PartiQLHeader, myHeader))
private val resolver = FnResolver(myHeader)
}

private sealed class Case {
Expand Down
Loading

1 comment on commit f9b52ca

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JMH Benchmark

Benchmark suite Current: f9b52ca Previous: acec206 Ratio
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithInterruptible 276.48522832185046 us/op 258.0905606986938 us/op 1.07
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithoutInterruptible 264.47552281229366 us/op 265.3169041255939 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithInterruptible 239.00370093257615 us/op 255.14058853622004 us/op 0.94
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithoutInterruptible 238.83670071537577 us/op 249.0682832468392 us/op 0.96
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithInterruptible 176.24780315781837 us/op 177.3827200087847 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithoutInterruptible 181.30596475889982 us/op 179.11608418510548 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithInterruptible 13100290.23355 us/op 12894360.098249998 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithoutInterruptible 12938305.014850002 us/op 13009037.5599 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithInterruptible 5018990.07535 us/op 5219523.4860499995 us/op 0.96
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithoutInterruptible 4891157.029399999 us/op 5066602.5507 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithInterruptible 39.44107939988098 us/op 38.57328101465763 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithoutInterruptible 38.21703249583905 us/op 39.982674942234304 us/op 0.96
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithInterruptible 13483465.0619 us/op 12853074.607700001 us/op 1.05
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithoutInterruptible 13104319.0663 us/op 12831470.45695 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithInterruptible 4828012.9538 us/op 4960708.119000001 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithoutInterruptible 5031947.8212 us/op 5136049.990399999 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithInterruptible 93188.0874318182 us/op 92981.02920909092 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithoutInterruptible 91583.95772840909 us/op 91793.50681742425 us/op 1.00
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 79.31404744812866 us/op 78.13404837532431 us/op 1.02
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 156.60802389779406 us/op 159.7364613390992 us/op 0.98
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 373135.56173333334 us/op 367235.18595 us/op 1.02
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 730570.1096250003 us/op 750135.706675 us/op 0.97
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 7295351.494649999 us/op 7345180.662300001 us/op 0.99
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 135.6513003665562 us/op 130.64789005902998 us/op 1.04
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 245.8838211982079 us/op 254.3580154350957 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 33.20527794761569 us/op 32.852553124906535 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 41.550894680668875 us/op 41.57713241297801 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 225.15003656398807 us/op 219.8612975569569 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 388.11574400333404 us/op 379.0709382551735 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 157.60138648511978 us/op 157.62247943413027 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 49.73995407222526 us/op 46.39147047126578 us/op 1.07
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 33.84973026167125 us/op 34.302067007697374 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 32.108896155888324 us/op 32.14332140607512 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 57.942370941553335 us/op 57.33661736979512 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 39.67570516923671 us/op 39.15434384300045 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 48.091099396334755 us/op 46.60141242820505 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 51.2188505254497 us/op 48.68584790670691 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 85.11759616437465 us/op 84.90368742576166 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 13.527532593870433 us/op 13.682548582409183 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 51.31480611353086 us/op 50.5304780272048 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 155.77976185695226 us/op 154.2467598243712 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 86.67832183655023 us/op 87.69916767383764 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 37.934799442770114 us/op 38.21531585067722 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 42.918076058746735 us/op 42.92925177099271 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 58.48805795359542 us/op 58.14986678713482 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 565.9948613336563 us/op 546.6702299705697 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 12.093660478185692 us/op 12.135435830450039 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 17.16218818581785 us/op 17.110152639452988 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 56.116861726903174 us/op 56.43248644650737 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 157.14872216243995 us/op 158.25368319582356 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 23.25297084167115 us/op 23.468843071926564 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 17.038703699049666 us/op 16.76867193573719 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 22.795672658090275 us/op 23.067591207145842 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 41.14278886539942 us/op 40.40683147246811 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 19.39437168195492 us/op 19.272389656342195 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 201.55862886670158 us/op 189.65725209383675 us/op 1.06
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 762.3376544823033 us/op 748.2527432379637 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 18.796584573115098 us/op 18.951859059334332 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 184.13004441144966 us/op 180.73406961198862 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 86.42859841102606 us/op 84.68267836735603 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 164.8612964210152 us/op 164.4306328169153 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 46.35157914355655 us/op 44.95658268442691 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 26.78212871043761 us/op 27.03941993670203 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 30.82592046437182 us/op 31.087788979376217 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 53.60907126023828 us/op 53.375484956910654 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 25.706155914981004 us/op 25.05372632971808 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 98.41310375185984 us/op 96.24458382724592 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 32.80463854345781 us/op 33.21659964656635 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 72.22796458496776 us/op 70.88938582143376 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 59.551693293746766 us/op 59.003604761995476 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 50.040878240748654 us/op 47.944896475513076 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 129.29967468395293 us/op 127.55017045542195 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 45.45981511036764 us/op 45.98847221067075 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 98.91351575312923 us/op 97.33003871804922 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 64.51219000557498 us/op 62.87857788391075 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 56.392023319753456 us/op 55.815646412867046 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 108.41192017049157 us/op 103.72860802989183 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 8.560015907961448 us/op 8.505668633517114 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 53.733314802384065 us/op 52.61442250418677 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 40.413304194722706 us/op 41.36391597700767 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 75.12063935064302 us/op 73.73204020685327 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 15.116876254196645 us/op 15.051939512255899 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 14.853422418733851 us/op 14.580782493804733 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 13.145079231522368 us/op 13.042784963341708 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 24.581203237103427 us/op 24.27254211716882 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 5.995287718991797 us/op 5.991055781204679 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 299.0524512545256 us/op 302.308346027087 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 829.2743059143774 us/op 817.4651031265163 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 6.755994821372487 us/op 6.944411658777021 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 1.846117432317883 us/op 1.8090385677775767 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 7.957671268723881 us/op 7.443953260302083 us/op 1.07
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameCaseWhenThen 32.06029476604256 us/op 32.039728868820326 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery 38.764461941349055 us/op 41.15485346701944 us/op 0.94
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery01 216.51723389372313 us/op 218.17812948348063 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery02 380.9220965405929 us/op 375.2576879422302 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExceptUnionIntersectSixty 154.80124419773372 us/op 155.7888213553749 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExec20Expressions 44.03196537130408 us/op 44.35817827898698 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameFromLet 32.7166889414688 us/op 32.75123141226956 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPattern 31.449750875627625 us/op 30.948276593528664 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPreFilters 55.84191252897119 us/op 55.405499946797576 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGroupLimit 40.9631149931137 us/op 38.83489762826632 us/op 1.05
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameLongFromSourceOrderBy 47.07968256852137 us/op 48.51247424515854 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameManyJoins 49.44819024035147 us/op 48.47292957876666 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedAggregates 83.2510898285113 us/op 84.7806595704794 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedParen 13.146142377653472 us/op 13.14094515274103 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNamePivot 52.07556158431292 us/op 51.321268881123636 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery15OrsAndLikes 151.05394207224236 us/op 153.8449289490063 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery30Plus 85.49993837586561 us/op 86.27875744564625 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFunc 37.90221595380935 us/op 37.74881404761315 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFuncInProjection 42.920141715707395 us/op 42.012409005265226 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryList 57.369459385879836 us/op 58.37012114784991 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryNestedSelect 550.4628070610291 us/op 548.2593255507928 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuerySimple 12.01830149190326 us/op 11.77612373747597 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralJoins 16.559487460727993 us/op 15.876475078645967 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralProjections 54.41189120903522 us/op 52.91271876191663 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralSelect 157.156644482448 us/op 157.43846411782084 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSimpleInsert 21.92652526008527 us/op 21.750816041391708 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeJoins 15.976171656940796 us/op 16.134762517606426 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeProjections 21.700073761148477 us/op 21.607298087564452 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeSelect 39.70619971593039 us/op 39.36013744483016 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameTimeZone 18.980891869010662 us/op 18.52663257247157 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery 194.50670764780511 us/op 195.67549107068868 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery01 756.7779618426628 us/op 738.1805222370629 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameCaseWhenThen 23.813169956414036 us/op 23.573978327509383 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery 238.5583013949576 us/op 242.52979604902688 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery01 121.51003101756328 us/op 120.92672493349646 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExceptUnionIntersectSixty 259.592288362623 us/op 268.80387263236173 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExec20Expressions 62.805785522746966 us/op 62.52629902189583 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameFromLet 37.914180476096504 us/op 38.16737617355424 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPattern 46.14974560827171 us/op 44.63371612922454 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPreFilters 77.71980880201315 us/op 79.35250795726986 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGroupLimit 28.652587283047374 us/op 28.135882131848422 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameLongFromSourceOrderBy 117.2136336938468 us/op 115.10955791010699 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameManyJoins 43.83549804715587 us/op 42.431497248054185 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedAggregates 99.00599532018869 us/op 95.72287042447518 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedParen 64.7626493066671 us/op 64.69325076657334 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNamePivot 62.55982489742608 us/op 65.52036502148512 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery15OrsAndLikes 188.15576997324243 us/op 188.79205423643256 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery30Plus 58.13996452722372 us/op 57.54379923050853 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFunc 115.75387793096766 us/op 112.60630780265797 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFuncInProjection 80.72087406703386 us/op 78.57584057039757 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryList 72.05240617812382 us/op 68.63586985899032 us/op 1.05
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryNestedSelect 138.99033763595915 us/op 139.2260722721159 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuerySimple 12.408107709075816 us/op 11.949465175043734 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralJoins 76.96119344275857 us/op 78.60613495781878 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralProjections 63.76200675591501 us/op 61.62271120599139 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralSelect 114.63773478053656 us/op 114.5980090530511 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSimpleInsert 22.606818951389304 us/op 22.00777542973768 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeJoins 20.539127524174017 us/op 20.02202134082227 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeProjections 19.508535677438278 us/op 18.068317877010035 us/op 1.08
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeSelect 34.936408454833426 us/op 34.41968097913906 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameTimeZone 7.412299657732673 us/op 7.3957508120833095 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery 461.22003145365653 us/op 450.94906140861997 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery01 1156.2406925628186 us/op 1148.395016121329 us/op 1.01

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.