Skip to content

Commit

Permalink
Simplifies logical model of the path expression (#1306)
Browse files Browse the repository at this point in the history
  • Loading branch information
johnedquinn authored Dec 15, 2023
1 parent c7c7972 commit 7dcdaac
Show file tree
Hide file tree
Showing 13 changed files with 463 additions and 861 deletions.
30 changes: 8 additions & 22 deletions partiql-plan/src/main/resources/partiql_plan.ion
Original file line number Diff line number Diff line change
Expand Up @@ -90,30 +90,16 @@ rex::{
ref: '.catalog.symbol.ref'
},

path::{
root: rex,
steps: list::[step],
_: [
step::[
// The key MUST be an integer expression. Ex: a[0], a[1 + 1]
index::{ key: rex },

// Case-sensitive lookup. The key MUST be a string expression. Ex: a["b"], a."b", a[CAST(b AS STRING)]
key::{ key: rex },

// Case-insensitive lookup. The key MUST be a literal string. Ex: a.b
symbol::{ key: string },
path::[
// The key MUST be an integer expression. Ex: a[0], a[1 + 1]
index::{ root: rex, key: rex },

// For arrays. Ex: a[*]
// TODO: Do we need this? According to specification: [1,2,3][*] ⇔ SELECT VALUE v FROM [1, 2, 3] AS v
wildcard::{},
// Case-sensitive lookup. The key MUST be a string expression. Ex: a["b"], a."b", a[CAST(b AS STRING)]
key::{ root: rex, key: rex },

// For tuples. Ex: a.*
// TODO: Do we need this? According to specification: {'a':1, 'b':2}.* ⇔ SELECT VALUE v FROM UNPIVOT {'a':1, 'b':2} AS v
unpivot::{},
],
],
},
// Case-insensitive lookup. The key MUST be a literal string. Ex: a.b
symbol::{ root: rex, key: string },
],

call::[
static::{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,13 @@ internal class TypeEnv(

/**
* Metadata regarding a resolved variable.
* @property depth The depth/level of the path match.
*/
internal sealed interface ResolvedVar {

public val type: StaticType
public val ordinal: Int
public val depth: Int

/**
* Metadata for a resolved local variable.
Expand All @@ -83,7 +85,7 @@ internal sealed interface ResolvedVar {
override val ordinal: Int,
val rootType: StaticType,
val replacementSteps: List<BindingName>,
val depth: Int
override val depth: Int
) : ResolvedVar

/**
Expand All @@ -97,7 +99,7 @@ internal sealed interface ResolvedVar {
class Global(
override val type: StaticType,
override val ordinal: Int,
val depth: Int,
override val depth: Int,
val position: Int
) : ResolvedVar
}
Expand Down
181 changes: 57 additions & 124 deletions partiql-planner/src/main/kotlin/org/partiql/planner/internal/ir/Nodes.kt
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,9 @@ import org.partiql.planner.internal.ir.builder.RexOpCollectionBuilder
import org.partiql.planner.internal.ir.builder.RexOpErrBuilder
import org.partiql.planner.internal.ir.builder.RexOpGlobalBuilder
import org.partiql.planner.internal.ir.builder.RexOpLitBuilder
import org.partiql.planner.internal.ir.builder.RexOpPathBuilder
import org.partiql.planner.internal.ir.builder.RexOpPathStepIndexBuilder
import org.partiql.planner.internal.ir.builder.RexOpPathStepSymbolBuilder
import org.partiql.planner.internal.ir.builder.RexOpPathStepUnpivotBuilder
import org.partiql.planner.internal.ir.builder.RexOpPathStepWildcardBuilder
import org.partiql.planner.internal.ir.builder.RexOpPathIndexBuilder
import org.partiql.planner.internal.ir.builder.RexOpPathKeyBuilder
import org.partiql.planner.internal.ir.builder.RexOpPathSymbolBuilder
import org.partiql.planner.internal.ir.builder.RexOpPivotBuilder
import org.partiql.planner.internal.ir.builder.RexOpSelectBuilder
import org.partiql.planner.internal.ir.builder.RexOpStructBuilder
Expand Down Expand Up @@ -433,142 +431,77 @@ internal data class Rex(
}
}

internal data class Path(
@JvmField
internal val root: Rex,
@JvmField
internal val steps: List<Step>,
) : Op() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(root)
kids.addAll(steps)
kids.filterNotNull()
internal sealed class Path : Op() {
internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R = when (this) {
is Index -> visitor.visitRexOpPathIndex(this, ctx)
is Key -> visitor.visitRexOpPathKey(this, ctx)
is Symbol -> visitor.visitRexOpPathSymbol(this, ctx)
}

internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPath(this, ctx)

internal sealed class Step : PlanNode() {
internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R = when (this) {
is Index -> visitor.visitRexOpPathStepIndex(this, ctx)
is Symbol -> visitor.visitRexOpPathStepSymbol(this, ctx)
is Wildcard -> visitor.visitRexOpPathStepWildcard(this, ctx)
is Unpivot -> visitor.visitRexOpPathStepUnpivot(this, ctx)
is Key -> visitor.visitRexOpPathStepKey(this, ctx)
internal data class Index(
@JvmField
internal val root: Rex,
@JvmField
internal val key: Rex,
) : Path() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(root)
kids.add(key)
kids.filterNotNull()
}

internal data class Index(
@JvmField
internal val key: Rex,
) : Step() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(key)
kids.filterNotNull()
}

internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPathStepIndex(this, ctx)
internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPathIndex(this, ctx)

internal companion object {
@JvmStatic
internal fun builder(): RexOpPathStepIndexBuilder = RexOpPathStepIndexBuilder()
}
internal companion object {
@JvmStatic
internal fun builder(): RexOpPathIndexBuilder = RexOpPathIndexBuilder()
}
}

/**
* This represents a case-sensitive lookup on a tuple. Ex: a['b'] or a[CAST('a' || 'b' AS STRING)].
* This would normally contain the dot notation for case-sensitive lookup, however, due to
* limitations -- we cannot consolidate these. See [Symbol] for more information.
*
* The main difference is that this does NOT include `a."b"`
*/
internal data class Key(
@JvmField
internal val key: Rex,
) : Step() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(key)
kids.filterNotNull()
}

internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPathStepKey(this, ctx)

internal companion object {
@JvmStatic
internal fun builder(): RexOpPathStepIndexBuilder = RexOpPathStepIndexBuilder()
}
internal data class Key(
@JvmField
internal val root: Rex,
@JvmField
internal val key: Rex,
) : Path() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(root)
kids.add(key)
kids.filterNotNull()
}

/**
* This represents a lookup on a tuple. We differentiate a [Key] and a [Symbol] at this point in the
* pipeline because we NEED to retain some syntactic knowledge for the following reason: we cannot
* use the syntactic index operation on a schema -- as it is not synonymous with a tuple. In other words,
* `<schema-name>."<value-name>"` is not interchangeable with `<schema-name>['<value-name>']`.
*
* So, in order to temporarily differentiate the `a."b"` from `a['b']` (see [Key]), we need to maintain
* the syntactic difference here. Note that this would potentially be mitigated by typing during the AST to Plan
* transformation.
*
* That being said, this represents a lookup on a tuple such as `a.b` or `a."b"`.
*/
internal data class Symbol(
@JvmField
internal val identifier: Identifier.Symbol,
) : Step() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(identifier)
kids.filterNotNull()
}

internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPathStepSymbol(this, ctx)
internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPathKey(this, ctx)

internal companion object {
@JvmStatic
internal fun builder(): RexOpPathStepSymbolBuilder = RexOpPathStepSymbolBuilder()
}
internal companion object {
@JvmStatic
fun builder(): RexOpPathKeyBuilder = RexOpPathKeyBuilder()
}
}

internal data class Wildcard(
@JvmField
internal val ` `: Char = ' ',
) : Step() {
internal override val children: List<PlanNode> = emptyList()

internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPathStepWildcard(this, ctx)

internal companion object {
@JvmStatic
internal fun builder(): RexOpPathStepWildcardBuilder = RexOpPathStepWildcardBuilder()
}
internal data class Symbol(
@JvmField
internal val root: Rex,
@JvmField
internal val key: String,
) : Path() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(root)
kids.filterNotNull()
}

internal data class Unpivot(
@JvmField
internal val ` `: Char = ' ',
) : Step() {
internal override val children: List<PlanNode> = emptyList()

internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPathStepUnpivot(this, ctx)
internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpPathSymbol(this, ctx)

internal companion object {
@JvmStatic
internal fun builder(): RexOpPathStepUnpivotBuilder = RexOpPathStepUnpivotBuilder()
}
internal companion object {
@JvmStatic
internal fun builder(): RexOpPathSymbolBuilder = RexOpPathSymbolBuilder()
}
}

internal companion object {
@JvmStatic
internal fun builder(): RexOpPathBuilder = RexOpPathBuilder()
}
}

internal sealed class Call : Op() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,14 @@ internal fun rexOpVarUnresolved(identifier: Identifier, scope: Rex.Op.Var.Scope)

internal fun rexOpGlobal(ref: Catalog.Symbol.Ref): Rex.Op.Global = Rex.Op.Global(ref)

internal fun rexOpPath(root: Rex, steps: List<Rex.Op.Path.Step>): Rex.Op.Path = Rex.Op.Path(
root,
steps
)

internal fun rexOpPathStepIndex(key: Rex): Rex.Op.Path.Step.Index = Rex.Op.Path.Step.Index(key)

internal fun rexOpPathStepKey(key: Rex): Rex.Op.Path.Step.Key = Rex.Op.Path.Step.Key(key)
internal fun rexOpPathIndex(root: Rex, key: Rex): Rex.Op.Path.Index = Rex.Op.Path.Index(root, key)

internal fun rexOpPathStepSymbol(identifier: Identifier.Symbol): Rex.Op.Path.Step.Symbol =
Rex.Op.Path.Step.Symbol(identifier)
internal fun rexOpPathKey(root: Rex, key: Rex): Rex.Op.Path.Key = Rex.Op.Path.Key(root, key)

internal fun rexOpPathStepWildcard(): Rex.Op.Path.Step.Wildcard = Rex.Op.Path.Step.Wildcard()

internal fun rexOpPathStepUnpivot(): Rex.Op.Path.Step.Unpivot = Rex.Op.Path.Step.Unpivot()
internal fun rexOpPathSymbol(root: Rex, key: String): Rex.Op.Path.Symbol = Rex.Op.Path.Symbol(
root,
key
)

internal fun rexOpCallStatic(fn: Fn, args: List<Rex>): Rex.Op.Call.Static = Rex.Op.Call.Static(
fn,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,51 +169,32 @@ internal class PlanBuilder {
return builder.build()
}

internal fun rexOpPath(
internal fun rexOpPathIndex(
root: Rex? = null,
steps: MutableList<Rex.Op.Path.Step> = mutableListOf(),
block: RexOpPathBuilder.() -> Unit = {},
): Rex.Op.Path {
val builder = RexOpPathBuilder(root, steps)
builder.block()
return builder.build()
}

internal fun rexOpPathStepIndex(
key: Rex? = null,
block: RexOpPathStepIndexBuilder.() -> Unit = {},
): Rex.Op.Path.Step.Index {
val builder = RexOpPathStepIndexBuilder(key)
block: RexOpPathIndexBuilder.() -> Unit = {},
): Rex.Op.Path.Index {
val builder = RexOpPathIndexBuilder(root, key)
builder.block()
return builder.build()
}

internal fun rexOpPathStepKey(
internal fun rexOpPathKey(
root: Rex? = null,
key: Rex? = null,
block: RexOpPathStepKeyBuilder.() -> Unit = {},
): Rex.Op.Path.Step.Key {
val builder = RexOpPathStepKeyBuilder(key)
builder.block()
return builder.build()
}

internal fun rexOpPathStepSymbol(
identifier: Identifier.Symbol? = null,
block: RexOpPathStepSymbolBuilder.() -> Unit = {},
): Rex.Op.Path.Step.Symbol {
val builder = RexOpPathStepSymbolBuilder(identifier)
block: RexOpPathKeyBuilder.() -> Unit = {},
): Rex.Op.Path.Key {
val builder = RexOpPathKeyBuilder(root, key)
builder.block()
return builder.build()
}

internal fun rexOpPathStepWildcard(block: RexOpPathStepWildcardBuilder.() -> Unit = {}): Rex.Op.Path.Step.Wildcard {
val builder = RexOpPathStepWildcardBuilder()
builder.block()
return builder.build()
}

internal fun rexOpPathStepUnpivot(block: RexOpPathStepUnpivotBuilder.() -> Unit = {}): Rex.Op.Path.Step.Unpivot {
val builder = RexOpPathStepUnpivotBuilder()
internal fun rexOpPathSymbol(
root: Rex? = null,
key: String? = null,
block: RexOpPathSymbolBuilder.() -> Unit = {},
): Rex.Op.Path.Symbol {
val builder = RexOpPathSymbolBuilder(root, key)
builder.block()
return builder.build()
}
Expand Down
Loading

1 comment on commit 7dcdaac

@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: 7dcdaac Previous: c7c7972 Ratio
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithInterruptible 264.1198200997108 us/op 265.8134558597078 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithoutInterruptible 256.7215111422235 us/op 281.192444010625 us/op 0.91
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithInterruptible 236.21046826082699 us/op 235.67691315826488 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithoutInterruptible 243.83730528259633 us/op 250.28112370724617 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithInterruptible 182.18656458828167 us/op 184.9764487701628 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithoutInterruptible 187.9528811112146 us/op 181.79092348066854 us/op 1.03
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithInterruptible 12946402.778950002 us/op 12952403.448549999 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithoutInterruptible 13196602.67025 us/op 12843001.635950001 us/op 1.03
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithInterruptible 5105643.734799999 us/op 5096803.392749999 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithoutInterruptible 5341782.8719 us/op 4988092.524549999 us/op 1.07
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithInterruptible 38.313973883849805 us/op 38.429943122335686 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithoutInterruptible 37.70039316459315 us/op 39.01652188998979 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithInterruptible 13283715.1335 us/op 13222381.581800003 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithoutInterruptible 12812525.4291 us/op 12882504.117199998 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithInterruptible 5002822.8598 us/op 4914431.444100001 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithoutInterruptible 5189671.79505 us/op 5148323.930249999 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithInterruptible 95732.79698583332 us/op 94849.93124545453 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithoutInterruptible 94088.78182840908 us/op 89285.65084015152 us/op 1.05
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 93.01713700318847 us/op 78.91402001897195 us/op 1.18
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 157.6219516429722 us/op 153.00927379126034 us/op 1.03
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 371535.62519999995 us/op 373177.32025 us/op 1.00
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 728983.6839 us/op 728022.617925 us/op 1.00
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 7216061.636150001 us/op 7201509.946500001 us/op 1.00
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 131.2715674710806 us/op 132.4353112838474 us/op 0.99
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 248.05245093595727 us/op 250.75559786895366 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 33.00080877810602 us/op 33.128152619810166 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 40.44847768185713 us/op 41.179720361121696 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 222.474322408728 us/op 221.92493176180824 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 376.86199347595743 us/op 383.6603287123004 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 158.07918645008564 us/op 158.06439526367248 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 46.25582368408685 us/op 46.31447501129214 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 33.911790729138026 us/op 33.55636256333064 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 32.76281428725294 us/op 31.85643474380144 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 56.211454655845024 us/op 57.77786861412598 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 39.150862826377356 us/op 39.47219090147451 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 46.44624515689062 us/op 47.49501483241381 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 50.6893632977754 us/op 50.4397393426096 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 82.86950484964663 us/op 84.1663560813085 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 13.401987595263785 us/op 13.561810106409789 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 50.921940802760375 us/op 52.354380785694296 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 154.93550631866248 us/op 157.64689638261007 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 86.76822405926262 us/op 85.99024955072107 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 37.735842407712155 us/op 38.44898542407032 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 43.21680674797908 us/op 42.477936194194825 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 60.126696232024884 us/op 60.66686219982578 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 550.4248613963466 us/op 551.0095609127234 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 12.021579541816582 us/op 12.298034489281743 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 16.566092681670515 us/op 16.958402626979137 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 55.73198500819984 us/op 56.80626867170547 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 155.89558665648445 us/op 158.1932217709068 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 22.65932228949472 us/op 23.314536569353844 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 16.641364274796302 us/op 16.672670800718763 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 22.874590404474365 us/op 22.5994406268685 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 40.81410600962578 us/op 40.530550016036315 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 18.695518805785888 us/op 19.475972043294632 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 193.45349737463386 us/op 193.62760728437635 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 736.1108868601968 us/op 745.5247955394995 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 18.513690194080958 us/op 18.553526778615435 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 183.42966023711423 us/op 181.55156603486677 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 85.32992765499016 us/op 85.37420051852129 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 162.05349405691356 us/op 161.4990368320447 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 45.669564851121095 us/op 46.855606658248846 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 27.02036670637262 us/op 27.105155942501238 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 29.513301037132685 us/op 31.645921980049202 us/op 0.93
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 54.44637201519149 us/op 53.91419539467777 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 24.943342184440482 us/op 25.355863565158266 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 97.31550004485376 us/op 100.00050263787986 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 33.41424023564 us/op 34.2670745187737 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 71.54890279151104 us/op 72.33935989649638 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 63.52471208128755 us/op 62.50545985504069 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 48.94576268642744 us/op 47.88161858835094 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 130.77642294706754 us/op 131.0872595000539 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 46.16731161617308 us/op 46.45477837514574 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 97.39590257083964 us/op 96.55232928021425 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 64.35067668430155 us/op 65.34215140553295 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 56.04509589890042 us/op 56.64169821601489 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 105.12013919791346 us/op 103.93928389947965 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 8.423757360874113 us/op 8.895209906676381 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 55.358500993384084 us/op 54.453647417369076 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 40.21564318343191 us/op 40.23854912678346 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 75.40382759248244 us/op 73.83370536654623 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 14.568703636965882 us/op 14.852736855884263 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 14.835333136344605 us/op 14.871699925774365 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 13.21499482945515 us/op 12.933466276150053 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 23.80653969098823 us/op 24.512350664704208 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 5.888473745370927 us/op 5.873987681600033 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 298.6724885628502 us/op 303.8916592414685 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 813.1802596805728 us/op 807.4228609665754 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 6.8666444456445745 us/op 6.88663683772686 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 1.8459146440125198 us/op 1.7512928992344299 us/op 1.05
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 7.562785471615868 us/op 7.727865618826543 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameCaseWhenThen 31.740614631478827 us/op 32.56946722087333 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery 41.48607230706076 us/op 42.21302957004602 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery01 219.26575888681018 us/op 222.67734619220704 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery02 386.39102117347863 us/op 378.5663828380647 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExceptUnionIntersectSixty 154.85660105558762 us/op 157.3515472423695 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExec20Expressions 44.61343996567656 us/op 44.66828046367772 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameFromLet 33.05509772225694 us/op 32.39097932305972 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPattern 31.518170452252075 us/op 31.462428888040627 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPreFilters 55.79162935757497 us/op 57.6786214791951 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGroupLimit 38.941049941212 us/op 38.72774677010466 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameLongFromSourceOrderBy 46.794020448673 us/op 48.028579852457675 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameManyJoins 47.96813769920971 us/op 49.97977559306067 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedAggregates 84.83781582642456 us/op 84.25381447494219 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedParen 12.90403832647458 us/op 13.213838529414994 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNamePivot 51.08007124637153 us/op 50.65318458961546 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery15OrsAndLikes 155.72501696861102 us/op 157.35449106844314 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery30Plus 86.34919963511571 us/op 86.8304911905292 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFunc 37.60946684120714 us/op 38.708120582846774 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFuncInProjection 42.158410878766816 us/op 42.177438915200796 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryList 58.232532310905846 us/op 57.692830050151315 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryNestedSelect 551.0776426358033 us/op 540.0471649559397 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuerySimple 11.638832920105077 us/op 11.671882776266603 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralJoins 16.03419681695703 us/op 16.269492715740377 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralProjections 51.83100817560283 us/op 54.99683320677542 us/op 0.94
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralSelect 152.85878952289443 us/op 158.96961987592206 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSimpleInsert 22.093159465058985 us/op 21.829584955721995 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeJoins 16.503842318031406 us/op 16.31974903264757 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeProjections 22.23642252488478 us/op 21.997551625538698 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeSelect 40.113374389092115 us/op 39.62874647833357 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameTimeZone 18.35057393859946 us/op 18.799291454260587 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery 195.8572761275757 us/op 195.29607541718642 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery01 756.3429128716142 us/op 747.3684033102107 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameCaseWhenThen 24.04943834443248 us/op 24.298055022374808 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery 250.3368546305137 us/op 242.8152764858337 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery01 122.26485548495961 us/op 119.77081119728093 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExceptUnionIntersectSixty 264.25519818950767 us/op 261.94027316877754 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExec20Expressions 62.56901065174567 us/op 62.40186263174653 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameFromLet 39.43443440203058 us/op 39.68213370506784 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPattern 44.44142975924204 us/op 46.558840032191306 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPreFilters 82.92277908810203 us/op 81.74526382693935 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGroupLimit 27.68463204704591 us/op 29.255039469651273 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameLongFromSourceOrderBy 118.40206127086256 us/op 117.67127008377138 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameManyJoins 43.76794193966883 us/op 42.85218538284712 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedAggregates 99.79440055840715 us/op 99.73949187861308 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedParen 65.92626741380055 us/op 64.96059698600216 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNamePivot 64.84307696456491 us/op 64.10680980547689 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery15OrsAndLikes 189.81824938348313 us/op 190.94915646745315 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery30Plus 56.7909492968398 us/op 58.352593174378356 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFunc 112.471283294196 us/op 111.18173380839112 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFuncInProjection 78.50530257609509 us/op 78.78078235139803 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryList 68.40499831143023 us/op 70.38025657828373 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryNestedSelect 135.1545064662812 us/op 138.32603278100285 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuerySimple 11.599502258343055 us/op 11.897636879919308 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralJoins 78.90990447178072 us/op 78.63338483793552 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralProjections 60.57409454203347 us/op 62.306334353747744 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralSelect 111.4921291548859 us/op 115.03795231292864 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSimpleInsert 21.821504622847215 us/op 21.704966995415173 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeJoins 20.778644113994243 us/op 20.86611502967012 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeProjections 18.03741625185476 us/op 18.00814261402767 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeSelect 37.1015055153732 us/op 36.22867864499045 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameTimeZone 7.3362684957965625 us/op 7.198121182726704 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery 463.33325556762946 us/op 462.5025786447932 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery01 1140.0097878392273 us/op 1120.672619479668 us/op 1.02

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

Please sign in to comment.