Skip to content

Commit

Permalink
Fixes parsing of signed numeric literals (#1484)
Browse files Browse the repository at this point in the history
  • Loading branch information
RCHowell authored Jul 16, 2024
1 parent edef7fb commit d660231
Show file tree
Hide file tree
Showing 6 changed files with 208 additions and 55 deletions.
44 changes: 2 additions & 42 deletions partiql-ast/src/main/kotlin/org/partiql/ast/helpers/ToLegacyAst.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,9 @@
package org.partiql.ast.helpers

import com.amazon.ion.Decimal
import com.amazon.ionelement.api.DecimalElement
import com.amazon.ionelement.api.FloatElement
import com.amazon.ionelement.api.IntElement
import com.amazon.ionelement.api.IntElementSize
import com.amazon.ionelement.api.MetaContainer
import com.amazon.ionelement.api.emptyMetaContainer
import com.amazon.ionelement.api.ionDecimal
import com.amazon.ionelement.api.ionFloat
import com.amazon.ionelement.api.ionInt
import com.amazon.ionelement.api.ionString
import com.amazon.ionelement.api.ionSymbol
Expand Down Expand Up @@ -48,7 +43,6 @@ import org.partiql.value.TimestampValue
import org.partiql.value.datetime.TimeZone
import org.partiql.value.toIon
import java.math.BigDecimal
import java.math.BigInteger

/**
* Translates an [AstNode] tree to the legacy PIG AST.
Expand Down Expand Up @@ -322,42 +316,8 @@ private class AstTranslator(val metas: Map<String, MetaContainer>) : AstBaseVisi
val arg = visitExpr(node.expr, ctx)
when (node.op) {
Expr.Unary.Op.NOT -> not(arg, metas)
Expr.Unary.Op.POS -> {
when {
arg !is PartiqlAst.Expr.Lit -> pos(arg)
arg.value is IntElement -> arg
arg.value is FloatElement -> arg
arg.value is DecimalElement -> arg
else -> pos(arg)
}
}
Expr.Unary.Op.NEG -> {
when {
arg !is PartiqlAst.Expr.Lit -> neg(arg, metas)
arg.value is IntElement -> {
val intValue = when (arg.value.integerSize) {
IntElementSize.LONG -> ionInt(-arg.value.longValue)
IntElementSize.BIG_INTEGER -> when (arg.value.bigIntegerValue) {
Long.MAX_VALUE.toBigInteger() + (1L).toBigInteger() -> ionInt(Long.MIN_VALUE)
else -> ionInt(arg.value.bigIntegerValue * BigInteger.valueOf(-1L))
}
}
arg.copy(
value = intValue.asAnyElement(),
metas = metas,
)
}
arg.value is FloatElement -> arg.copy(
value = ionFloat(-(arg.value.doubleValue)).asAnyElement(),
metas = metas,
)
arg.value is DecimalElement -> arg.copy(
value = ionDecimal(Decimal.valueOf(-(arg.value.decimalValue))).asAnyElement(),
metas = metas,
)
else -> neg(arg, metas)
}
}
Expr.Unary.Op.POS -> pos(arg, metas)
Expr.Unary.Op.NEG -> neg(arg, metas)
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package org.partiql.lang.syntax

import org.junit.jupiter.api.parallel.Execution
import org.junit.jupiter.api.parallel.ExecutionMode
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.MethodSource

class PartiQLParserLiteralTests : PartiQLParserTestBase() {

override val targets: Array<ParserTarget> = arrayOf(ParserTarget.EXPERIMENTAL)

@ParameterizedTest
@MethodSource("cases")
@Execution(ExecutionMode.CONCURRENT)
fun testAll(case: Case) {
assertExpression(
source = case.input,
expectedPigAst = case.expect,
)
Long.MAX_VALUE
}

companion object {

@JvmStatic
fun cases() = listOf(
Case(
input = "1",
expect = "(lit 1)"
),
Case(
input = "+-1",
expect = "(lit -1)"
),
Case(
input = "-+1",
expect = "(lit -1)"
),
Case(
input = "-+-1",
expect = "(lit 1)"
),
Case(
input = "+++1",
expect = "(lit 1)"
),
Case(
input = "-1",
expect = "(lit -1)"
),
Case(
input = "+1",
expect = "(lit 1)"
),
Case(
input = "9223372036854775808", // Long.MAX_VALUE + 1
expect = "(lit 9223372036854775808)"
),
Case(
input = "-9223372036854775809", // Long.MIN_VALUE - 1
expect = "(lit -9223372036854775809)"
),
Case(
input = "+9223372036854775808",
expect = "(lit 9223372036854775808)"
),
)
}

class Case(
@JvmField val input: String,
@JvmField val expect: String,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ class PartiQLParserTest : PartiQLParserTestBase() {
}

@Test
@Ignore("Disabled because it's not clear that the parser should be pushing down negations on boxed Ion values")
fun unaryIonFloatLiteral() {
assertExpression(
"+-+-+-`-5e0`",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ import org.partiql.parser.SourceLocation
import org.partiql.parser.SourceLocations
import org.partiql.parser.antlr.PartiQLParserBaseVisitor
import org.partiql.parser.internal.util.DateTimeUtils
import org.partiql.parser.internal.util.NumberUtils.negate
import org.partiql.value.NumericValue
import org.partiql.value.PartiQLValueExperimental
import org.partiql.value.StringValue
Expand Down Expand Up @@ -569,17 +570,18 @@ internal class PartiQLParserDefault : PartiQLParser {
}
}

override fun visitQualifiedName(ctx: org.partiql.parser.antlr.PartiQLParser.QualifiedNameContext) = translate(ctx) {
val qualifier = ctx.qualifier.map { visitSymbolPrimitive(it) }
val name = visitSymbolPrimitive(ctx.name)
if (qualifier.isEmpty()) {
name
} else {
val root = qualifier.first()
val steps = qualifier.drop(1) + listOf(name)
identifierQualified(root, steps)
override fun visitQualifiedName(ctx: org.partiql.parser.antlr.PartiQLParser.QualifiedNameContext) =
translate(ctx) {
val qualifier = ctx.qualifier.map { visitSymbolPrimitive(it) }
val name = visitSymbolPrimitive(ctx.name)
if (qualifier.isEmpty()) {
name
} else {
val root = qualifier.first()
val steps = qualifier.drop(1) + listOf(name)
identifierQualified(root, steps)
}
}
}

/**
*
Expand Down Expand Up @@ -1488,9 +1490,34 @@ internal class PartiQLParserDefault : PartiQLParser {
}

override fun visitValueExpr(ctx: GeneratedParser.ValueExprContext) = translate(ctx) {
if (ctx.parent != null) return@translate visit(ctx.parent)
val expr = visit(ctx.rhs) as Expr
exprUnary(convertUnaryOp(ctx.sign), expr)
// expression
if (ctx.parent != null) {
return@translate visit(ctx.parent)
}
// unary expression
val op = when (ctx.sign.type) {
GeneratedParser.NOT -> Expr.Unary.Op.NOT
GeneratedParser.PLUS -> Expr.Unary.Op.POS
GeneratedParser.MINUS -> Expr.Unary.Op.NEG
else -> throw error(ctx.sign, "Invalid unary operator")
}
// If argument is not a literal, then return the op.
val arg = visit(ctx.rhs) as Expr
return when (arg) {
is Expr.Lit -> arg.negate(op)
// TODO should we unwrap and negate Ion values for -`-1`? I don't think so..
is Expr.Ion -> exprUnary(op, arg)
else -> exprUnary(op, arg)
}
}

private fun Expr.Lit.negate(op: Expr.Unary.Op): Expr {
val v = this.value
return when {
op == Expr.Unary.Op.POS && v is NumericValue<*> -> exprLit(v)
op == Expr.Unary.Op.NEG && v is NumericValue<*> -> exprLit(v.negate())
else -> exprUnary(op, exprLit(v))
}
}

private fun convertBinaryExpr(lhs: ParserRuleContext, rhs: ParserRuleContext, op: Expr.Binary.Op): Expr {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package org.partiql.parser.internal.util

import org.partiql.value.DecimalValue
import org.partiql.value.Float32Value
import org.partiql.value.Float64Value
import org.partiql.value.Int16Value
import org.partiql.value.Int32Value
import org.partiql.value.Int64Value
import org.partiql.value.Int8Value
import org.partiql.value.IntValue
import org.partiql.value.NumericValue
import org.partiql.value.PartiQLValueExperimental
import org.partiql.value.decimalValue
import org.partiql.value.float32Value
import org.partiql.value.float64Value
import org.partiql.value.int16Value
import org.partiql.value.int32Value
import org.partiql.value.int64Value
import org.partiql.value.int8Value
import org.partiql.value.intValue
import java.math.BigInteger

internal object NumberUtils {

/**
* We might consider a `negate` method on the NumericValue but this is fine for now and is internal.
*/
@OptIn(PartiQLValueExperimental::class)
internal fun NumericValue<*>.negate(): NumericValue<*> = when (this) {
is DecimalValue -> decimalValue(value?.negate())
is Float32Value -> float32Value(value?.let { it * -1 })
is Float64Value -> float64Value(value?.let { it * -1 })
is Int8Value -> when (value) {
null -> this
Byte.MIN_VALUE -> int16Value(value?.let { (it.toInt() * -1).toShort() })
else -> int8Value(value?.let { (it.toInt() * -1).toByte() })
}
is Int16Value -> when (value) {
null -> this
Short.MIN_VALUE -> int32Value(value?.let { it.toInt() * -1 })
else -> int16Value(value?.let { (it.toInt() * -1).toShort() })
}
is Int32Value -> when (value) {
null -> this
Int.MIN_VALUE -> int64Value(value?.let { it.toLong() * -1 })
else -> int32Value(value?.let { it * -1 })
}
is Int64Value -> when (value) {
null -> this
Long.MIN_VALUE -> intValue(BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.ONE))
else -> int64Value(value?.let { it * -1 })
}
is IntValue -> intValue(value?.negate())
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.partiql.parser.internal.util

import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import org.partiql.parser.internal.util.NumberUtils.negate
import org.partiql.value.PartiQLValueExperimental
import org.partiql.value.decimalValue
import org.partiql.value.int16Value
import org.partiql.value.int32Value
import org.partiql.value.int64Value
import org.partiql.value.int8Value
import org.partiql.value.intValue
import java.math.BigDecimal
import java.math.BigInteger

@OptIn(PartiQLValueExperimental::class)
class NumberUtilsTest {

@Test
fun negate_normal() {
assertEquals(int8Value(-1), int8Value(1).negate())
assertEquals(int16Value(-1), int16Value(1).negate())
assertEquals(int32Value(-1), int32Value(1).negate())
assertEquals(int64Value(-1), int64Value(1).negate())
assertEquals(intValue(BigInteger.valueOf(-1L)), intValue(BigInteger.valueOf(1L)).negate())
assertEquals(decimalValue(BigDecimal.valueOf(-1L)), decimalValue(BigDecimal.valueOf(1L)).negate())
}

@Test
fun negate_overflow() {
assertEquals(int16Value((Byte.MAX_VALUE.toShort() + 1).toShort()), int8Value(Byte.MIN_VALUE).negate())
assertEquals(int32Value((Short.MAX_VALUE.toInt() + 1)), int16Value(Short.MIN_VALUE).negate())
assertEquals(int64Value((Int.MAX_VALUE.toLong() + 1)), int32Value(Int.MIN_VALUE).negate())
assertEquals(intValue(BigInteger.valueOf(Long.MAX_VALUE) + BigInteger.ONE), int64Value(Long.MIN_VALUE).negate())
}
}

1 comment on commit d660231

@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: d660231 Previous: edef7fb Ratio
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithInterruptible 252.74594999358305 us/op 261.33603685220567 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithoutInterruptible 274.8959913825206 us/op 250.88568690392304 us/op 1.10
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithInterruptible 259.8630433979977 us/op 245.24412756601564 us/op 1.06
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithoutInterruptible 256.4195753769164 us/op 236.30122678028124 us/op 1.09
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithInterruptible 175.07959678917265 us/op 173.75145089606343 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithoutInterruptible 170.39735975672028 us/op 183.99085784865943 us/op 0.93
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithInterruptible 12899255.396300001 us/op 13046294.04905 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithoutInterruptible 12893145.015199997 us/op 13105217.3649 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithInterruptible 5004979.8982 us/op 4941015.965550001 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithoutInterruptible 5433915.424699998 us/op 5071254.4001 us/op 1.07
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithInterruptible 38.268947813264084 us/op 38.80149495434966 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithoutInterruptible 39.337832809420824 us/op 42.842476652838265 us/op 0.92
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithInterruptible 12909761.950499998 us/op 13031613.67835 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithoutInterruptible 12716975.629150001 us/op 12797969.11705 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithInterruptible 5043147.137799999 us/op 4907738.499 us/op 1.03
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithoutInterruptible 4950251.758699999 us/op 4905678.717049999 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithInterruptible 99591.28350636364 us/op 106343.99628333333 us/op 0.94
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithoutInterruptible 99533.01736454546 us/op 99662.41013454545 us/op 1.00
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 81.5261306004321 us/op 80.40449915383036 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 153.65639989901544 us/op 152.20720378103616 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 367132.5676 us/op 370428.93231666664 us/op 0.99
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 733300.199125 us/op 718000.7548249998 us/op 1.02
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 7213312.239499999 us/op 7362304.684950002 us/op 0.98
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 133.83899577053273 us/op 128.96303953467384 us/op 1.04
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 251.670251463973 us/op 248.50444018598688 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 34.0793791819675 us/op 34.02288977118842 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 43.22350298938118 us/op 43.492036191212904 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 237.99949245077414 us/op 240.9402435618923 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 407.84703505294107 us/op 414.15124732628794 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 156.2051361803257 us/op 157.06712182974542 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 48.61696447973553 us/op 46.929297399705995 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 33.89907707905799 us/op 34.80151389563001 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 32.834628770443494 us/op 32.45882806557138 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 57.254522295699 us/op 60.27610472211776 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 38.823223815822146 us/op 40.07316515519824 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 48.48182967741001 us/op 49.500203371867315 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 50.4001945124691 us/op 49.77695493925118 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 83.60255239650704 us/op 87.38645985864687 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 13.532154173692717 us/op 13.571128969083507 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 52.73212762096259 us/op 51.713761259393685 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 161.5610888179796 us/op 157.87304321674344 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 86.58111656236782 us/op 86.6944414742785 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 39.21522137679006 us/op 38.71894503900163 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 43.40426797902607 us/op 43.04118121028708 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 59.45998557910243 us/op 59.59528262912737 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 586.0026029269786 us/op 585.2096181784718 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 12.394485099296281 us/op 12.178714772582127 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 17.514444300068586 us/op 17.014883931166494 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 55.92331681519456 us/op 56.17960073399833 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 159.44346024344065 us/op 160.64511531825173 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 24.029782229221702 us/op 23.44199351499048 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 17.065451979701415 us/op 17.43851331021063 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 22.750601566430984 us/op 23.13996844041295 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 40.93799891286057 us/op 40.875299178300615 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 19.50313971088059 us/op 20.117227037102733 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 193.1759079317999 us/op 194.1433957554483 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 756.6017772378686 us/op 754.2157870481351 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 18.30527475201561 us/op 18.51554563105075 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 197.1822214575953 us/op 180.9766894886884 us/op 1.09
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 84.05585193147165 us/op 85.92825335882964 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 159.27023315802305 us/op 163.30085999508344 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 47.34734017424496 us/op 46.82164321854195 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 28.43933802341788 us/op 28.815743515283494 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 28.864575033371022 us/op 29.798836843981906 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 51.41582544258557 us/op 52.21823257476806 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 25.4417300803064 us/op 25.178786593232367 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 96.91100401329811 us/op 99.47262827621672 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 33.361835090764224 us/op 34.036639919938004 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 71.573792078148 us/op 73.83619447937498 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 61.522751570250605 us/op 66.19915545614069 us/op 0.93
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 49.09310564336383 us/op 50.26782306299042 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 133.33091678332875 us/op 130.02106286684523 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 44.45019994895141 us/op 42.62140038671453 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 98.50677331014045 us/op 97.70809350840693 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 63.7858413136258 us/op 63.60394558218403 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 55.29135618363853 us/op 58.15901639782934 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 109.86176268365776 us/op 105.70209539637862 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 8.424733279857781 us/op 8.387697823825572 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 52.5940931870907 us/op 53.21211048276344 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 39.519006137464025 us/op 40.93894736195539 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 74.72219374283851 us/op 73.73451813598092 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 15.142688546796979 us/op 15.228602235236858 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 15.034532723989063 us/op 14.734385707362202 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 12.769477308436514 us/op 13.096974781469157 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 25.183501243186658 us/op 24.320413898975897 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 5.989788409163304 us/op 6.000245632479522 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 303.19707769375617 us/op 305.83927468800385 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 856.0356871910075 us/op 852.6250754387153 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 6.962837692557528 us/op 6.927880518735319 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 1.9804672926421614 us/op 1.9542023318394435 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 7.595988534808508 us/op 7.7416988853925846 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testCompileQuery1 7.06922776606103 us/op 7.0910472641779165 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testCompileQuery2 13.833757888857056 us/op 13.7842539002849 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testCompileQuery3 15.28321838803063 us/op 15.661838619477862 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testCompileQuery4 22.20305431395258 us/op 22.506485318243147 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testCompileQuery5 23.853112104145588 us/op 23.89735826260511 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery1 147196.21780625 us/op 144152.76230714284 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery10 15.57329815257521 us/op 15.3888635844567 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery11 2.4669394560180944 us/op 2.4775454609086527 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery2 243656.78642999995 us/op 239121.77421 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery3 242269.17701499996 us/op 239246.03900000002 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery4 301660.0472125 us/op 307184.3175125 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery5 298111.20568749995 us/op 302047.39670000004 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery6 376012.54099999985 us/op 360231.12326666666 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery7 31257.009074092202 us/op 30062.62051346575 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery8 2798.7868804811233 us/op 2803.6434614384684 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineAsyncBenchmark.testEvalQuery9 265.20660448790187 us/op 264.3797724790646 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testCompileQuery1 6.891763147030598 us/op 6.903937331194221 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testCompileQuery2 13.015188494071248 us/op 13.090091776749622 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testCompileQuery3 15.0515103761702 us/op 14.719238371024767 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testCompileQuery4 21.141545639914206 us/op 21.245124106808213 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testCompileQuery5 21.557032148641973 us/op 21.863727369588485 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery1 123165.63322847223 us/op 133234.12681875002 us/op 0.92
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery10 9.826778855439555 us/op 9.667403934425574 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery11 1.3666093100355312 us/op 1.4122193067068085 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery2 196562.07847500005 us/op 191842.0537333333 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery3 202741.864475 us/op 197375.24134166667 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery4 249969.77810499998 us/op 237944.06124999997 us/op 1.05
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery5 233933.81089999998 us/op 237174.40517 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery6 295989.9691625 us/op 295592.2919125 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery7 23094.518138758544 us/op 23097.531480549856 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery8 2181.9821339564087 us/op 2191.36433108353 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLCompilerPipelineBenchmark.testEvalQuery9 200.13381643991937 us/op 200.17900098555816 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameCaseWhenThen 32.63788173450541 us/op 31.93782445377849 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery 42.81383754135324 us/op 41.494045161732316 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery01 235.89611267098508 us/op 236.22006002620884 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery02 406.10239105905066 us/op 411.59175439915924 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExceptUnionIntersectSixty 157.61554220516913 us/op 156.70532087545206 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExec20Expressions 44.70955097868541 us/op 45.40519329231049 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameFromLet 32.74088970766555 us/op 33.4873820248679 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPattern 31.501409809806837 us/op 31.81722302069871 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPreFilters 55.784696823017654 us/op 56.1245369368814 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGroupLimit 39.4743227681785 us/op 41.091448875259445 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameLongFromSourceOrderBy 47.398560157775215 us/op 47.969347473157896 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameManyJoins 49.869439620812315 us/op 50.278919792328665 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedAggregates 85.48947479780426 us/op 82.03954508493494 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedParen 13.109100450527063 us/op 13.08602144214205 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNamePivot 51.72811055672021 us/op 51.24754090834951 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery15OrsAndLikes 160.37632147519665 us/op 153.5879063173848 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery30Plus 86.56652175332506 us/op 85.82352062627021 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFunc 38.688499772171454 us/op 38.2877103133687 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFuncInProjection 42.49535057788865 us/op 42.99082670369021 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryList 57.87560286501444 us/op 58.2035561209172 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryNestedSelect 587.489399544416 us/op 578.496683714498 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuerySimple 11.92793478927479 us/op 12.085418524115042 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralJoins 16.650081065399295 us/op 16.14675452812662 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralProjections 52.95532450932988 us/op 54.4752113047705 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralSelect 160.49637108529697 us/op 159.28686922449873 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSimpleInsert 22.061276153101325 us/op 22.523179091275143 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeJoins 16.003684381179887 us/op 16.264924859614727 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeProjections 21.79218218038202 us/op 21.9432916440536 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeSelect 39.73787487218975 us/op 40.07415496845793 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameTimeZone 18.965587910320043 us/op 18.90535153725048 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery 192.84208035336866 us/op 195.704410586612 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery01 756.6536290533362 us/op 775.8387251732881 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameCaseWhenThen 23.57749132121111 us/op 23.719082061203572 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery 235.83242540170667 us/op 241.45481463992897 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery01 125.12092967430726 us/op 126.9080421310179 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExceptUnionIntersectSixty 255.85798063714736 us/op 268.170126911437 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExec20Expressions 61.006173446737264 us/op 62.39470319782329 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameFromLet 40.722513409407824 us/op 38.45850214143097 us/op 1.06
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPattern 44.95968363753475 us/op 46.61165359956202 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPreFilters 82.18722625960629 us/op 77.89741720344071 us/op 1.06
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGroupLimit 28.634451747761325 us/op 28.528270594088344 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameLongFromSourceOrderBy 115.60974516170215 us/op 120.80060481135278 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameManyJoins 43.0731775969935 us/op 41.7884909402704 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedAggregates 99.38240980356156 us/op 101.98079054773055 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedParen 68.27936402066616 us/op 65.0878908715368 us/op 1.05
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNamePivot 63.56879916561669 us/op 64.39839992486392 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery15OrsAndLikes 189.75473393658854 us/op 188.83558449895594 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery30Plus 60.546264714990606 us/op 58.4204692447934 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFunc 113.5094121829165 us/op 112.10706924202638 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFuncInProjection 79.65527361891527 us/op 79.68488657922278 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryList 70.02286267276271 us/op 69.32395119397849 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryNestedSelect 141.85139707784822 us/op 137.9744517230177 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuerySimple 12.080429534002475 us/op 12.384590667684659 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralJoins 79.12792742463327 us/op 80.15597414037242 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralProjections 64.51245099372 us/op 63.88486832879115 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralSelect 113.67328525027305 us/op 115.91801765972536 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSimpleInsert 22.154403935059484 us/op 21.917085671192265 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeJoins 19.97608672990859 us/op 20.462739671602932 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeProjections 17.917465414317117 us/op 18.887548957003926 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeSelect 35.002944161833724 us/op 34.44528095902976 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameTimeZone 7.691838011732628 us/op 7.401224760077291 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery 458.8393237031967 us/op 460.63447242619634 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery01 1200.0273616518666 us/op 1125.6095387611267 us/op 1.07

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

Please sign in to comment.