Skip to content

Commit

Permalink
Merge pull request #1273 from partiql/planner-main
Browse files Browse the repository at this point in the history
Merge Planner to Main
  • Loading branch information
yliuuuu authored Dec 1, 2023
2 parents 6f6eb70 + 0a2cee6 commit 34f12ce
Show file tree
Hide file tree
Showing 297 changed files with 34,407 additions and 6,228 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ jobs:
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.sha }}
submodules: recursive

- name: Use Java ${{ matrix.java }}
Expand Down
14 changes: 13 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,28 @@ Thank you to all who have contributed!
- Adds top-level IR node creation functions.
- Adds `componentN` functions (destructuring) to IR nodes via Kotlin data classes
- Adds public `tag` field to IR nodes for associating metadata
- Adds AST Normalization Pass.
- Adds PartiQLPlanner Interface, which is responsible for translate an AST to a Plan.

### Changed
- StaticTypeInferencer and PlanTyper will not raise an error when an expression is inferred to `NULL` or `unionOf(NULL, MISSING)`. In these cases the StaticTypeInferencer and PlanTyper will still raise the Problem Code `ExpressionAlwaysReturnsNullOrMissing` but the severity of the problem has been changed to warning. In the case an expression always returns `MISSING`, problem code `ExpressionAlwaysReturnsMissing` will be raised, which will have problem severity of error.
- **Breaking** The default integer literal type is now 32-bit; if the literal can not fit in a 32-bit integer, it overflows to 64-bit.
- **BREAKING** `PartiQLValueType` now distinguishes between Arbitrary Precision Decimal and Fixed Precision Decimal.
- **BREAKING** Function Signature Changes. Now Function signature has two subclasses, `Scalar` and `Aggregation`.
- **BREAKING** In the produced plan:
- The new plan is fully resolved and typed.
- Operators will be converted to function call.


### Deprecated

### Fixed
- Fixes the CLI hanging on invalid queries. See issue #1230.

### Removed
- [Breaking] Removed IR factory in favor of static top-level functions. Change `Ast.foo()`
- **Breaking** Removed IR factory in favor of static top-level functions. Change `Ast.foo()`
to `foo()`
- **Breaking** Removed `org.partiql.lang.planner.transforms.AstToPlan`. Use `org.partiql.planner.PartiQLPlanner`.

### Security

Expand Down Expand Up @@ -153,6 +163,8 @@ classes in `:partiql-ast` and `:partiql-plan`.
- `org.partiql.lang.errors.ProblemSeverity` -> `org.partiql.errors.ProblemSeverity`
- `org.partiql.lang.errors.ProblemHandler` -> `org.partiql.errors.ProblemHandler`
- **Breaking** the `sourceLocation` field of `org.partiql.errors.Problem` was changed from `org.partiql.lang.ast.SoureceLocationMeta` to `org.partiql.errors.ProblemLocation`.
- Removed `Nullable<Value` implementations of PartiQLValue and made the standard implementations nullable.
- Using PartiQLValueType requires optin; this was a miss from an earlier commit.
- **Breaking** removed redundant ValueParameter from FunctionParameter as all parameters are values.
- Introduces `isNullCall` and `isNullable` properties to FunctionSignature.
- Removed `Nullable...Value` implementations of PartiQLValue and made the standard implementations nullable.
Expand Down
3 changes: 3 additions & 0 deletions buildSrc/src/main/kotlin/partiql.versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ object Versions {
const val kasechange = "1.3.0"
const val ktlint = "11.6.0"
const val pig = "0.6.2"
const val shadow = "7.1.2"

// Testing
const val assertj = "3.11.0"
Expand Down Expand Up @@ -113,4 +114,6 @@ object Plugins {
const val jmh = "me.champeau.gradle.jmh"
const val ktlint = "org.jlleitschuh.gradle.ktlint"
const val library = "org.gradle.java-library"
const val shadow = "com.github.johnrengelman.shadow"
const val testFixtures = "org.gradle.java-test-fixtures"
}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
group=org.partiql
version=0.13.3-SNAPSHOT
version=0.14.0-SNAPSHOT

ossrhUsername=EMPTY
ossrhPassword=EMPTY
Expand Down
65 changes: 65 additions & 0 deletions partiql-ast/src/main/kotlin/org/partiql/ast/helpers/ToBinder.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package org.partiql.ast.helpers

import org.partiql.ast.Expr
import org.partiql.ast.Identifier
import org.partiql.ast.builder.ast
import org.partiql.value.PartiQLValueExperimental
import org.partiql.value.StringValue

private val col = { index: () -> Int -> "_${index()}" }

/**
* Produces a "binder" (AS alias) for an expression following the given rules:
*
* 1. If item is an id, use the last symbol
* 2. If item is a path with a final symbol step, use the symbol — else 4
* 3. If item is a cast, use the value name
* 4. Else, use item index with prefix _
*
* See https://github.com/partiql/partiql-lang-kotlin/issues/1122
*/
public fun Expr.toBinder(index: () -> Int): Identifier.Symbol = when (this) {
is Expr.Var -> this.identifier.toBinder()
is Expr.Path -> this.toBinder(index)
is Expr.Cast -> this.value.toBinder(index)
is Expr.SessionAttribute -> this.attribute.name.uppercase().toBinder()
else -> col(index).toBinder()
}

/**
* Simple toBinder that uses an int literal rather than a closure.
*
* @param index
* @return
*/
public fun Expr.toBinder(index: Int): Identifier.Symbol = toBinder { index }

private fun String.toBinder(): Identifier.Symbol = ast {
// Every binder preserves case
identifierSymbol(this@toBinder, Identifier.CaseSensitivity.SENSITIVE)
}

private fun Identifier.toBinder(): Identifier.Symbol = when (this@toBinder) {
is Identifier.Qualified -> when (steps.isEmpty()) {
true -> root.symbol.toBinder()
else -> steps.last().symbol.toBinder()
}
is Identifier.Symbol -> symbol.toBinder()
}

@OptIn(PartiQLValueExperimental::class)
private fun Expr.Path.toBinder(index: () -> Int): Identifier.Symbol {
if (steps.isEmpty()) return root.toBinder(index)
return when (val last = steps.last()) {
is Expr.Path.Step.Symbol -> last.symbol.toBinder()
is Expr.Path.Step.Index -> {
val k = last.key
if (k is Expr.Lit && k.value is StringValue) {
k.value.value!!.toBinder()
} else {
col(index).toBinder()
}
}
else -> col(index).toBinder()
}
}
25 changes: 25 additions & 0 deletions partiql-ast/src/main/kotlin/org/partiql/ast/normalize/AstPass.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
* Copyright 2022 Amazon.com, Inc. or its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at:
*
* http://aws.amazon.com/apache2.0/
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/

package org.partiql.ast.normalize

import org.partiql.ast.Statement

/**
* Wraps a rewriter with a default entry point.
*/
public interface AstPass {

public fun apply(statement: Statement): Statement
}
29 changes: 29 additions & 0 deletions partiql-ast/src/main/kotlin/org/partiql/ast/normalize/Normalize.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright 2022 Amazon.com, Inc. or its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at:
*
* http://aws.amazon.com/apache2.0/
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/

package org.partiql.ast.normalize

import org.partiql.ast.Statement

/**
* AST normalization
*/
public fun Statement.normalize(): Statement {
// could be a fold, but this is nice for setting breakpoints
var ast = this
ast = NormalizeFromSource.apply(ast)
ast = NormalizeSelect.apply(ast)
ast = NormalizeGroupBy.apply(ast)
return ast
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Copyright 2022 Amazon.com, Inc. or its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at:
*
* http://aws.amazon.com/apache2.0/
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/

package org.partiql.ast.normalize

import org.partiql.ast.AstNode
import org.partiql.ast.Expr
import org.partiql.ast.From
import org.partiql.ast.Statement
import org.partiql.ast.fromJoin
import org.partiql.ast.helpers.toBinder
import org.partiql.ast.util.AstRewriter

/**
* Assign aliases to any FROM source which does not have one.
*/
internal object NormalizeFromSource : AstPass {

override fun apply(statement: Statement): Statement = Visitor.visitStatement(statement, 0) as Statement

private object Visitor : AstRewriter<Int>() {

// Each SFW starts the ctx count again.
override fun visitExprSFW(node: Expr.SFW, ctx: Int): AstNode = super.visitExprSFW(node, 0)

override fun visitStatementDMLBatchLegacy(node: Statement.DML.BatchLegacy, ctx: Int): AstNode =
super.visitStatementDMLBatchLegacy(node, 0)

override fun visitFrom(node: From, ctx: Int) = super.visitFrom(node, ctx) as From

override fun visitFromJoin(node: From.Join, ctx: Int): From {
val lhs = visitFrom(node.lhs, ctx)
val rhs = visitFrom(node.rhs, ctx + 1)
val condition = node.condition?.let { visitExpr(it, ctx) as Expr }
return if (lhs !== node.lhs || rhs !== node.rhs || condition !== node.condition) {
fromJoin(lhs, rhs, node.type, condition)
} else {
node
}
}

override fun visitFromValue(node: From.Value, ctx: Int): From {
val expr = visitExpr(node.expr, ctx) as Expr
val asAlias = node.asAlias ?: expr.toBinder(ctx)
return if (expr !== node.expr || asAlias !== node.asAlias) {
node.copy(expr = expr, asAlias = asAlias)
} else {
node
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* Copyright 2022 Amazon.com, Inc. or its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at:
*
* http://aws.amazon.com/apache2.0/
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/

package org.partiql.ast.normalize

import org.partiql.ast.Expr
import org.partiql.ast.GroupBy
import org.partiql.ast.Statement
import org.partiql.ast.groupByKey
import org.partiql.ast.helpers.toBinder
import org.partiql.ast.util.AstRewriter

/**
* Adds a unique binder to each group key.
*/
object NormalizeGroupBy : AstPass {

override fun apply(statement: Statement) = Visitor.visitStatement(statement, 0) as Statement

private object Visitor : AstRewriter<Int>() {

override fun visitGroupByKey(node: GroupBy.Key, ctx: Int): GroupBy.Key {
val expr = visitExpr(node.expr, 0) as Expr
val alias = when (node.asAlias) {
null -> expr.toBinder(ctx)
else -> node.asAlias
}
return if (expr !== node.expr || alias !== node.asAlias) {
groupByKey(expr, alias)
} else {
node
}
}
}
}
Loading

1 comment on commit 34f12ce

@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: 34f12ce Previous: 6f6eb70 Ratio
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithInterruptible 250.85717052346754 us/op 272.939420636338 us/op 0.92
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithoutInterruptible 264.0147676980644 us/op 296.8528221440777 us/op 0.89
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithInterruptible 247.6104755220105 us/op 231.47540949204364 us/op 1.07
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithoutInterruptible 242.76391816623374 us/op 237.0619845250157 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithInterruptible 185.1002631591023 us/op 184.93894266321664 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithoutInterruptible 178.9196424729484 us/op 180.55349981080184 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithInterruptible 13004365.66495 us/op 13281266.369300002 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithoutInterruptible 13112876.4435 us/op 13358158.469349999 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithInterruptible 5158427.9589 us/op 5150652.127 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithoutInterruptible 5070589.9451 us/op 4878357.37155 us/op 1.04
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithInterruptible 38.73259834958345 us/op 38.36478305566007 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithoutInterruptible 38.59073277531859 us/op 38.186633830515675 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithInterruptible 12923071.721599998 us/op 13379363.29525 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithoutInterruptible 13087465.3357 us/op 13073335.508350002 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithInterruptible 5115480.59405 us/op 5070788.5437 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithoutInterruptible 5162147.594199999 us/op 4977260.814 us/op 1.04
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithInterruptible 101940.70612272728 us/op 94928.99769545454 us/op 1.07
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithoutInterruptible 95510.55520454545 us/op 96580.55767954547 us/op 0.99
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 80.5340551022043 us/op 82.02981422921913 us/op 0.98
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 157.25711575854183 us/op 155.32154367125563 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 377091.7091666667 us/op 380262.36841666664 us/op 0.99
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 742123.9897000002 us/op 724842.58825 us/op 1.02
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 7432243.374 us/op 7191651.257500002 us/op 1.03
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 129.82872098555305 us/op 129.0536789103998 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 247.38171824680148 us/op 244.3821958462715 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 33.476718267578576 us/op 33.39498884620449 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 41.969497907675496 us/op 41.417408328399965 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 219.71756709944694 us/op 221.05858005563854 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 381.12175601852454 us/op 373.4330891604737 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 155.50619839746793 us/op 156.7659217579199 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 45.66335583106178 us/op 45.664002203887 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 34.10774850729784 us/op 33.89464996085641 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 31.65148277257523 us/op 32.55511008551693 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 57.963322199695064 us/op 58.57035793810735 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 39.4581375494506 us/op 38.768582054263575 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 46.9047497790505 us/op 48.03284430084576 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 49.03466511926386 us/op 49.88624298426381 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 82.85026307541631 us/op 84.99401531767577 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 13.292440215966545 us/op 13.562248316651125 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 50.13842315919288 us/op 50.692072850311554 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 157.25797771285352 us/op 155.9216744602099 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 86.59237751448855 us/op 86.71530876466197 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 37.49832528393132 us/op 37.74400378750755 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 42.66060288657716 us/op 42.43953758755478 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 60.85974959753645 us/op 58.75074145354218 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 571.2524971794882 us/op 542.6369462098878 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 12.214185572636184 us/op 12.264737848281271 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 16.79526717565401 us/op 16.8168192632193 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 56.9297239211402 us/op 55.35275379656309 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 157.68985151687843 us/op 158.21507957827757 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 23.477201331768175 us/op 23.66773539701682 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 16.498380446974416 us/op 16.523460165935585 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 23.637085863102357 us/op 23.57449082514477 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 39.94207253387118 us/op 40.19413863854283 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 18.89058420790313 us/op 19.829348725677395 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 196.942966836588 us/op 198.54444453104037 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 763.7340890436271 us/op 780.3937705614001 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 18.770174007327313 us/op 18.518330220706662 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 187.23056275535077 us/op 187.49962240513642 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 85.25850966838185 us/op 87.67653157847717 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 168.79463230480997 us/op 164.71023004214553 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 46.16062985436926 us/op 46.037578909647486 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 27.790205697124595 us/op 27.94843677439938 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 31.34859543613601 us/op 31.887945162813338 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 53.552992021907755 us/op 54.187696388371194 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 25.16097213956562 us/op 24.970638413469224 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 99.48521585122378 us/op 98.85844034326325 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 34.15902151493215 us/op 33.19544247575394 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 72.40342836397228 us/op 70.59994338606582 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 62.277226530695806 us/op 60.51076123470938 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 47.68770091589585 us/op 48.46330869530025 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 129.5149013664872 us/op 130.66023103725917 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 45.72208793854822 us/op 46.92568466241605 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 97.6097973582139 us/op 96.99703285288845 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 64.21390922439556 us/op 63.87844642564029 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 55.67578640209181 us/op 58.375394483588046 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 109.29174318177851 us/op 107.90595262057244 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 8.46934236749912 us/op 8.5581022380327 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 52.55499801701253 us/op 53.29446795240036 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 40.8868177604024 us/op 39.95195209908942 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 75.52404136020078 us/op 75.93533558007368 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 14.98006862316725 us/op 14.766359652530713 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 14.76505297535708 us/op 14.871550379257574 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 13.162339022259768 us/op 13.489086334843748 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 24.646262658907776 us/op 24.69435522290872 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 5.925204337798812 us/op 6.216907658666378 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 297.18337041700295 us/op 296.153165534966 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 800.8234647786308 us/op 840.041889186351 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 7.006817344976521 us/op 6.834774257028762 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 1.8872718264533475 us/op 2.1304661647388166 us/op 0.89
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 8.13287204176044 us/op 7.572821197830768 us/op 1.07
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameCaseWhenThen 32.464676355765576 us/op 32.327008793623676 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery 39.71720599879872 us/op 39.85341024503984 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery01 219.47384190745305 us/op 224.64561319494413 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery02 378.63147696196256 us/op 372.93736726898976 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExceptUnionIntersectSixty 155.99746543916356 us/op 156.10520891537377 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExec20Expressions 44.14796542732314 us/op 44.63633197209188 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameFromLet 32.170977130583125 us/op 32.386501370451406 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPattern 31.4518733058606 us/op 31.030581910819876 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPreFilters 56.291461102476 us/op 56.69221488581659 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGroupLimit 40.39829006376598 us/op 39.51192806384226 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameLongFromSourceOrderBy 46.971481544149 us/op 47.749774745999424 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameManyJoins 48.186078527728036 us/op 49.30390525902709 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedAggregates 83.88463676987217 us/op 82.00161078552449 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedParen 13.060853380331134 us/op 13.131492671777597 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNamePivot 50.268821589742124 us/op 50.66696560751478 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery15OrsAndLikes 155.97664506486868 us/op 157.47783222220315 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery30Plus 85.43122527502325 us/op 86.15305418726642 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFunc 37.5186407049413 us/op 37.81814342135912 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFuncInProjection 42.3173874697699 us/op 41.92519671611046 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryList 57.98808146336732 us/op 59.310979845697204 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryNestedSelect 542.6887114274433 us/op 549.8333851282016 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuerySimple 11.663229228964441 us/op 11.705829536438436 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralJoins 16.242308630733824 us/op 16.310724508445514 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralProjections 53.38826858154016 us/op 54.41104891027803 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralSelect 150.56854463118907 us/op 156.33963389760092 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSimpleInsert 21.74391379885973 us/op 22.13147804869117 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeJoins 16.050046483123875 us/op 16.385176484478674 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeProjections 21.773194558445873 us/op 22.239201971984503 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeSelect 38.623891793798364 us/op 39.203805399043354 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameTimeZone 18.69690993142397 us/op 19.021708002440615 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery 191.45739740363945 us/op 191.2737280841547 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery01 742.9136606851835 us/op 765.8185333914957 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameCaseWhenThen 24.067075110277095 us/op 24.172569771601125 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery 241.90707633394499 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery01 121.6478579900185 us/op 121.102069870989 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExceptUnionIntersectSixty 262.5974416307472 us/op 268.7710873852081 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExec20Expressions 64.02917078336226 us/op 65.42878112754514 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameFromLet 39.3900997458917 us/op 39.89639191359934 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPattern 46.167635456544545 us/op 47.37544259053447 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPreFilters 78.55412611218213 us/op 77.4471104915385 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGroupLimit 28.459463006042245 us/op 28.723957613759353 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameLongFromSourceOrderBy 122.08861750051577 us/op 118.59706042585478 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameManyJoins 43.42923767609933 us/op 41.581994437416355 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedAggregates 101.71477375600689 us/op 99.81246820077254 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedParen 67.66326242560274 us/op 65.29979129901186 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNamePivot 64.12711857552786 us/op 63.158331606515084 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery15OrsAndLikes 192.5622159195974 us/op 191.45177636186799 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery30Plus 57.99911931757864 us/op 61.466422836488675 us/op 0.94
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFunc 113.4166899573268 us/op 115.95902492270743 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFuncInProjection 82.57643792430392 us/op 81.53363047608272 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryList 69.84520771110519 us/op 70.7536522858514 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryNestedSelect 136.1677834472871 us/op 139.53214391942606 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuerySimple 12.132323983094086 us/op 12.597845479695986 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralJoins 79.77621928596108 us/op 77.22782909432729 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralProjections 63.5852934515306 us/op 61.63776082313391 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralSelect 114.59984344691436 us/op 118.9936912208448 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSimpleInsert 21.95060013290273 us/op 22.073712406954872 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeJoins 19.889804078065275 us/op 20.71176748287018 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeProjections 17.871946484442706 us/op 18.277239858367675 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeSelect 36.05267222920981 us/op 36.367754578110564 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameTimeZone 7.5760347689112395 us/op 7.498100623694995 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery 463.3445623368381 us/op 463.5002124143592 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery01 1147.6626611502502 us/op 1202.1102669166928 us/op 0.95

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

Please sign in to comment.