Skip to content

Commit

Permalink
Merge pull request #1308 from partiql/remodel-globals
Browse files Browse the repository at this point in the history
Structures globals within plan to lie within catalogs
  • Loading branch information
johnedquinn authored Dec 15, 2023
2 parents c489057 + 22d3c33 commit c7c7972
Show file tree
Hide file tree
Showing 14 changed files with 298 additions and 112 deletions.
31 changes: 24 additions & 7 deletions partiql-plan/src/main/resources/partiql_plan.ion
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,32 @@ imports::{
}

parti_q_l_plan::{
globals: list::[global], // (globals ...)
catalogs: list::[catalog], // (catalogs ...)
statement: statement, // (statement ...)
}

// Globals

global::{
path: '.identifier.qualified',
type: static_type,
// Represent an instance of a database.
// - Currently, `symbols` represents all values from this catalog to be used in this plan.
// - Eventually, TODO functions may be resolved to a specific namespace within a catalog.
catalog::{
name: string,
symbols: list::[symbol],
_: [
// A reference to a value contained within a catalog.
symbol::{
// The path to a value WITHIN a catalog. Note: This should not start with the catalog's name. Also, this
// should not be empty
path: list::[string],
type: static_type,
_: [
// A reference to a symbol
ref::{
catalog: int,
symbol: int
}
]
}
]
}

// Functions
Expand Down Expand Up @@ -70,7 +87,7 @@ rex::{
},

global::{
ref: int,
ref: '.catalog.symbol.ref'
},

path::{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ internal class PartiQLPlannerDefault(
val typer = PlanTyper(env, onProblem)
val internal = org.partiql.planner.internal.ir.PartiQLPlan(
version = PartiQLVersion.VERSION_0_1,
globals = env.globals,
catalogs = env.catalogs,
statement = typer.resolve(root),
)

Expand Down
63 changes: 48 additions & 15 deletions partiql-planner/src/main/kotlin/org/partiql/planner/internal/Env.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@ package org.partiql.planner.internal
import org.partiql.planner.Header
import org.partiql.planner.PartiQLPlanner
import org.partiql.planner.internal.ir.Agg
import org.partiql.planner.internal.ir.Catalog
import org.partiql.planner.internal.ir.Fn
import org.partiql.planner.internal.ir.Global
import org.partiql.planner.internal.ir.Identifier
import org.partiql.planner.internal.ir.Rel
import org.partiql.planner.internal.ir.Rex
import org.partiql.planner.internal.ir.global
import org.partiql.planner.internal.ir.identifierQualified
import org.partiql.planner.internal.ir.identifierSymbol
import org.partiql.planner.internal.typer.FnResolver
import org.partiql.spi.BindingCase
Expand Down Expand Up @@ -92,13 +90,15 @@ internal sealed interface ResolvedVar {
* Metadata for a resolved global variable
*
* @property type Resolved StaticType
* @property ordinal Index offset in the environment `globals` list
* @property ordinal The relevant catalog's index offset in the [Env.catalogs] list
* @property depth The depth/level of the path match.
* @property position The relevant value's index offset in the [Catalog.values] list
*/
class Global(
override val type: StaticType,
override val ordinal: Int,
val depth: Int,
val position: Int
) : ResolvedVar
}

Expand All @@ -124,14 +124,14 @@ internal enum class ResolutionStrategy {
*/
internal class Env(
private val headers: List<Header>,
private val catalogs: Map<String, ConnectorMetadata>,
private val connectors: Map<String, ConnectorMetadata>,
private val session: PartiQLPlanner.Session,
) {

/**
* Collect the list of all referenced globals during planning.
*/
public val globals = mutableListOf<Global>()
public val catalogs = mutableListOf<Catalog>()

/**
* Encapsulate all function resolving logic within [FnResolver].
Expand All @@ -144,6 +144,7 @@ internal class Env(
}

/**
* Leverages a [FunctionResolver] to find a matching function defined in the [Header] scalar function catalog.
*/
internal fun resolveFn(fn: Fn.Unresolved, args: List<Rex>) = fnResolver.resolveFn(fn, args)
Expand Down Expand Up @@ -186,8 +187,8 @@ internal class Env(
* @return
*/
private fun getMetadata(catalogName: BindingName): Handle<ConnectorMetadata>? {
val catalogKey = catalogs.keys.firstOrNull { catalogName.isEquivalentTo(it) } ?: return null
val metadata = catalogs[catalogKey] ?: return null
val catalogKey = connectors.keys.firstOrNull { catalogName.isEquivalentTo(it) } ?: return null
val metadata = connectors[catalogKey] ?: return null
return catalogKey to metadata
}

Expand All @@ -208,15 +209,47 @@ internal class Env(
getObjectHandle(cat, catalogPath)?.let { handle ->
getObjectDescriptor(handle).let { type ->
val depth = calculateMatched(originalPath, catalogPath, handle.second.absolutePath)
val qualifiedPath = identifierQualified(
root = handle.first.toIdentifier(),
steps = handle.second.absolutePath.steps.map { it.toIdentifier() }
)
val global = global(qualifiedPath, type)
globals.add(global)
val (catalogIndex, valueIndex) = getOrAddCatalogValue(handle.first, handle.second.absolutePath.steps, type)
// Return resolution metadata
ResolvedVar.Global(type, globals.size - 1, depth)
ResolvedVar.Global(type, catalogIndex, depth, valueIndex)
}
}
}
}

/**
* @return a [Pair] where [Pair.first] is the catalog index and [Pair.second] is the value index within that catalog
*/
private fun getOrAddCatalogValue(catalogName: String, valuePath: List<String>, valueType: StaticType): Pair<Int, Int> {
val catalogIndex = getOrAddCatalog(catalogName)
val symbols = catalogs[catalogIndex].symbols
return symbols.indexOfFirst { value ->
value.path == valuePath
}.let { index ->
when (index) {
-1 -> {
catalogs[catalogIndex] = catalogs[catalogIndex].copy(
symbols = symbols + listOf(Catalog.Symbol(valuePath, valueType))
)
catalogIndex to 0
}
else -> {
catalogIndex to index
}
}
}
}

private fun getOrAddCatalog(catalogName: String): Int {
return catalogs.indexOfFirst { catalog ->
catalog.name == catalogName
}.let {
when (it) {
-1 -> {
catalogs.add(Catalog(catalogName, emptyList()))
catalogs.lastIndex
}
else -> it
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ package org.partiql.planner.internal.ir

import org.partiql.planner.internal.ir.builder.AggResolvedBuilder
import org.partiql.planner.internal.ir.builder.AggUnresolvedBuilder
import org.partiql.planner.internal.ir.builder.CatalogBuilder
import org.partiql.planner.internal.ir.builder.CatalogSymbolBuilder
import org.partiql.planner.internal.ir.builder.CatalogSymbolRefBuilder
import org.partiql.planner.internal.ir.builder.FnResolvedBuilder
import org.partiql.planner.internal.ir.builder.FnUnresolvedBuilder
import org.partiql.planner.internal.ir.builder.GlobalBuilder
import org.partiql.planner.internal.ir.builder.IdentifierQualifiedBuilder
import org.partiql.planner.internal.ir.builder.IdentifierSymbolBuilder
import org.partiql.planner.internal.ir.builder.PartiQlPlanBuilder
Expand Down Expand Up @@ -80,13 +82,13 @@ internal data class PartiQLPlan(
@JvmField
internal val version: PartiQLVersion,
@JvmField
internal val globals: List<Global>,
internal val catalogs: List<Catalog>,
@JvmField
internal val statement: Statement,
) : PlanNode() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.addAll(globals)
kids.addAll(catalogs)
kids.add(statement)
kids.filterNotNull()
}
Expand All @@ -100,24 +102,58 @@ internal data class PartiQLPlan(
}
}

internal data class Global(
internal data class Catalog(
@JvmField
internal val path: Identifier.Qualified,
internal val name: String,
@JvmField
internal val type: StaticType,
internal val symbols: List<Symbol>,
) : PlanNode() {
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(path)
kids.addAll(symbols)
kids.filterNotNull()
}

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

internal data class Symbol(
@JvmField
internal val path: List<String>,
@JvmField
internal val type: StaticType,
) : PlanNode() {
internal override val children: List<PlanNode> = emptyList()

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

internal data class Ref(
@JvmField
internal val catalog: Int,
@JvmField
internal val symbol: Int,
) : PlanNode() {
internal override val children: List<PlanNode> = emptyList()

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

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

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

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

Expand Down Expand Up @@ -380,9 +416,13 @@ internal data class Rex(

internal data class Global(
@JvmField
internal val ref: Int,
internal val ref: Catalog.Symbol.Ref,
) : Op() {
internal override val children: List<PlanNode> = emptyList()
internal override val children: List<PlanNode> by lazy {
val kids = mutableListOf<PlanNode?>()
kids.add(ref)
kids.filterNotNull()
}

internal override fun <R, C> accept(visitor: PlanVisitor<R, C>, ctx: C): R =
visitor.visitRexOpGlobal(this, ctx)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,17 @@ import org.partiql.value.PartiQLValueExperimental

internal fun partiQLPlan(
version: PartiQLVersion,
globals: List<Global>,
catalogs: List<Catalog>,
statement: Statement,
): PartiQLPlan = PartiQLPlan(version, globals, statement)
): PartiQLPlan = PartiQLPlan(version, catalogs, statement)

internal fun global(path: Identifier.Qualified, type: StaticType): Global = Global(path, type)
internal fun catalog(name: String, symbols: List<Catalog.Symbol>): Catalog = Catalog(name, symbols)

internal fun catalogSymbol(path: List<String>, type: StaticType): Catalog.Symbol =
Catalog.Symbol(path, type)

internal fun catalogSymbolRef(catalog: Int, symbol: Int): Catalog.Symbol.Ref =
Catalog.Symbol.Ref(catalog, symbol)

internal fun fnResolved(signature: FunctionSignature.Scalar): Fn.Resolved = Fn.Resolved(signature)

Expand Down Expand Up @@ -44,7 +50,7 @@ internal fun rexOpVarResolved(ref: Int): Rex.Op.Var.Resolved = Rex.Op.Var.Resolv
internal fun rexOpVarUnresolved(identifier: Identifier, scope: Rex.Op.Var.Scope):
Rex.Op.Var.Unresolved = Rex.Op.Var.Unresolved(identifier, scope)

internal fun rexOpGlobal(ref: Int): Rex.Op.Global = Rex.Op.Global(ref)
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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
package org.partiql.planner.internal.ir.builder

import org.partiql.planner.internal.ir.Agg
import org.partiql.planner.internal.ir.Catalog
import org.partiql.planner.internal.ir.Fn
import org.partiql.planner.internal.ir.Global
import org.partiql.planner.internal.ir.Identifier
import org.partiql.planner.internal.ir.PartiQLPlan
import org.partiql.planner.internal.ir.PartiQLVersion
Expand All @@ -22,21 +22,41 @@ internal fun <T : PlanNode> plan(block: PlanBuilder.() -> T) = PlanBuilder().blo
internal class PlanBuilder {
internal fun partiQLPlan(
version: PartiQLVersion? = null,
globals: MutableList<Global> = mutableListOf(),
catalogs: MutableList<Catalog> = mutableListOf(),
statement: Statement? = null,
block: PartiQlPlanBuilder.() -> Unit = {},
): PartiQLPlan {
val builder = PartiQlPlanBuilder(version, globals, statement)
val builder = PartiQlPlanBuilder(version, catalogs, statement)
builder.block()
return builder.build()
}

internal fun global(
path: Identifier.Qualified? = null,
internal fun catalog(
name: String? = null,
symbols: MutableList<Catalog.Symbol> = mutableListOf(),
block: CatalogBuilder.() -> Unit = {},
): Catalog {
val builder = CatalogBuilder(name, symbols)
builder.block()
return builder.build()
}

internal fun catalogSymbol(
path: MutableList<String> = mutableListOf(),
type: StaticType? = null,
block: GlobalBuilder.() -> Unit = {},
): Global {
val builder = GlobalBuilder(path, type)
block: CatalogSymbolBuilder.() -> Unit = {},
): Catalog.Symbol {
val builder = CatalogSymbolBuilder(path, type)
builder.block()
return builder.build()
}

internal fun catalogSymbolRef(
catalog: Int? = null,
symbol: Int? = null,
block: CatalogSymbolRefBuilder.() -> Unit = {},
): Catalog.Symbol.Ref {
val builder = CatalogSymbolRefBuilder(catalog, symbol)
builder.block()
return builder.build()
}
Expand Down Expand Up @@ -140,7 +160,10 @@ internal class PlanBuilder {
return builder.build()
}

internal fun rexOpGlobal(ref: Int? = null, block: RexOpGlobalBuilder.() -> Unit = {}): Rex.Op.Global {
internal fun rexOpGlobal(
ref: Catalog.Symbol.Ref? = null,
block: RexOpGlobalBuilder.() -> Unit = {}
): Rex.Op.Global {
val builder = RexOpGlobalBuilder(ref)
builder.block()
return builder.build()
Expand Down
Loading

1 comment on commit c7c7972

@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: c7c7972 Previous: 79ee005 Ratio
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithInterruptible 265.8134558597078 us/op 257.1151384318193 us/op 1.03
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithoutInterruptible 281.192444010625 us/op 265.85313360108483 us/op 1.06
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithInterruptible 235.67691315826488 us/op 232.519077916979 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithoutInterruptible 250.28112370724617 us/op 237.30611049904442 us/op 1.05
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithInterruptible 184.9764487701628 us/op 174.19800762011752 us/op 1.06
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithoutInterruptible 181.79092348066854 us/op 170.97368439029086 us/op 1.06
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithInterruptible 12952403.448549999 us/op 12838262.678150002 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithoutInterruptible 12843001.635950001 us/op 12847889.369700002 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithInterruptible 5096803.392749999 us/op 5217227.6047 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithoutInterruptible 4988092.524549999 us/op 5031493.13965 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithInterruptible 38.429943122335686 us/op 39.58802874906563 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithoutInterruptible 39.01652188998979 us/op 38.185921751607125 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithInterruptible 13222381.581800003 us/op 12955521.829600003 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithoutInterruptible 12882504.117199998 us/op 12859394.808149999 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithInterruptible 4914431.444100001 us/op 5029152.9465499995 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithoutInterruptible 5148323.930249999 us/op 5054903.704150001 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithInterruptible 94849.93124545453 us/op 102911.34357 us/op 0.92
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithoutInterruptible 89285.65084015152 us/op 96054.45573886366 us/op 0.93
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 78.91402001897195 us/op 86.50768487264324 us/op 0.91
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 153.00927379126034 us/op 155.4196404078454 us/op 0.98
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 373177.32025 us/op 371497.69063333335 us/op 1.00
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 728022.617925 us/op 731099.6258999999 us/op 1.00
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 7201509.946500001 us/op 7331120.298350002 us/op 0.98
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 132.4353112838474 us/op 125.71502172555797 us/op 1.05
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 250.75559786895366 us/op 252.16951577445394 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 33.128152619810166 us/op 33.60122357277941 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 41.179720361121696 us/op 40.11666294833122 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 221.92493176180824 us/op 222.29663742216334 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 383.6603287123004 us/op 375.368860924712 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 158.06439526367248 us/op 156.7160371943899 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 46.31447501129214 us/op 46.86814051960313 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 33.55636256333064 us/op 33.98177721366061 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 31.85643474380144 us/op 32.249167391857895 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 57.77786861412598 us/op 58.06603834221629 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 39.47219090147451 us/op 39.85212114321006 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 47.49501483241381 us/op 46.822168172316054 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 50.4397393426096 us/op 49.44804800227645 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 84.1663560813085 us/op 86.88007635539134 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 13.561810106409789 us/op 13.26103052697361 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 52.354380785694296 us/op 52.32659571756424 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 157.64689638261007 us/op 150.87955528670494 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 85.99024955072107 us/op 85.12192739170823 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 38.44898542407032 us/op 37.87059990810348 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 42.477936194194825 us/op 42.765277945576756 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 60.66686219982578 us/op 58.786012229608346 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 551.0095609127234 us/op 551.3504696265657 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 12.298034489281743 us/op 12.078762429754335 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 16.958402626979137 us/op 16.95433464276247 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 56.80626867170547 us/op 56.68582251136998 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 158.1932217709068 us/op 162.30021493750365 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 23.314536569353844 us/op 23.11376335355598 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 16.672670800718763 us/op 16.848522294642827 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 22.5994406268685 us/op 22.71072731226191 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 40.530550016036315 us/op 39.98427213421163 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 19.475972043294632 us/op 19.411657418267104 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 193.62760728437635 us/op 191.38417103524878 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 745.5247955394995 us/op 757.6949191629417 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 18.553526778615435 us/op 18.71817622611959 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 181.55156603486677 us/op 190.18673476426753 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 85.37420051852129 us/op 84.65698446336928 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 161.4990368320447 us/op 165.98043403245387 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 46.855606658248846 us/op 45.22734408078978 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 27.105155942501238 us/op 27.654643888465415 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 31.645921980049202 us/op 29.253593044315096 us/op 1.08
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 53.91419539467777 us/op 53.75736899364962 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 25.355863565158266 us/op 25.177629556109142 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 100.00050263787986 us/op 97.3982963859526 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 34.2670745187737 us/op 32.58092911233107 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 72.33935989649638 us/op 70.91358300925133 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 62.50545985504069 us/op 59.97506366306173 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 47.88161858835094 us/op 47.80513073196127 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 131.0872595000539 us/op 128.99712422193755 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 46.45477837514574 us/op 44.46168349412426 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 96.55232928021425 us/op 97.92499758611646 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 65.34215140553295 us/op 63.27876432492926 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 56.64169821601489 us/op 56.4801130406276 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 103.93928389947965 us/op 104.7421132593583 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 8.895209906676381 us/op 8.657086466988584 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 54.453647417369076 us/op 55.2811941130022 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 40.23854912678346 us/op 40.46058770897467 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 73.83370536654623 us/op 81.16390336764336 us/op 0.91
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 14.852736855884263 us/op 15.149693624374436 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 14.871699925774365 us/op 14.263829020455878 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 12.933466276150053 us/op 13.059679838805414 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 24.512350664704208 us/op 24.308174939966715 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 5.873987681600033 us/op 5.915040746389605 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 303.8916592414685 us/op 307.1096472971934 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 807.4228609665754 us/op 812.5987519342777 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 6.88663683772686 us/op 6.913502459263948 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 1.7512928992344299 us/op 1.8273893901641571 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 7.727865618826543 us/op 7.530116426626617 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameCaseWhenThen 32.56946722087333 us/op 32.48256879225711 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery 42.21302957004602 us/op 38.782602458847734 us/op 1.09
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery01 222.67734619220704 us/op 219.33687588668855 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery02 378.5663828380647 us/op 367.40566704629055 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExceptUnionIntersectSixty 157.3515472423695 us/op 156.4871086836709 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExec20Expressions 44.66828046367772 us/op 44.558549729567844 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameFromLet 32.39097932305972 us/op 33.216412386018405 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPattern 31.462428888040627 us/op 30.487505322261256 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPreFilters 57.6786214791951 us/op 55.64514744198217 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGroupLimit 38.72774677010466 us/op 39.31229854440908 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameLongFromSourceOrderBy 48.028579852457675 us/op 47.636949784752986 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameManyJoins 49.97977559306067 us/op 49.771554914020065 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedAggregates 84.25381447494219 us/op 84.23983249321888 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedParen 13.213838529414994 us/op 12.965586599576094 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNamePivot 50.65318458961546 us/op 50.851473319451834 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery15OrsAndLikes 157.35449106844314 us/op 153.32496091657995 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery30Plus 86.8304911905292 us/op 85.24776182099046 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFunc 38.708120582846774 us/op 38.11842931139055 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFuncInProjection 42.177438915200796 us/op 42.314540953003224 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryList 57.692830050151315 us/op 57.70764504981405 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryNestedSelect 540.0471649559397 us/op 551.243456918489 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuerySimple 11.671882776266603 us/op 11.75228052198244 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralJoins 16.269492715740377 us/op 16.08045633786098 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralProjections 54.99683320677542 us/op 52.69362363456462 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralSelect 158.96961987592206 us/op 155.01619535274784 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSimpleInsert 21.829584955721995 us/op 22.205186210625097 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeJoins 16.31974903264757 us/op 15.921912713318047 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeProjections 21.997551625538698 us/op 21.700650642842856 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeSelect 39.62874647833357 us/op 39.439014649383616 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameTimeZone 18.799291454260587 us/op 18.18503842475659 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery 195.29607541718642 us/op 192.22756530853803 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery01 747.3684033102107 us/op 736.9083964581525 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameCaseWhenThen 24.298055022374808 us/op 24.005657651968626 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery 242.8152764858337 us/op 244.79972434912452 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery01 119.77081119728093 us/op 120.954210055813 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExceptUnionIntersectSixty 261.94027316877754 us/op 262.2057023515398 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExec20Expressions 62.40186263174653 us/op 64.23983292943885 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameFromLet 39.68213370506784 us/op 38.920320119587544 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPattern 46.558840032191306 us/op 46.397039700531494 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPreFilters 81.74526382693935 us/op 79.49477112432996 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGroupLimit 29.255039469651273 us/op 28.923221124761948 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameLongFromSourceOrderBy 117.67127008377138 us/op 116.74381657397205 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameManyJoins 42.85218538284712 us/op 42.13056713309393 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedAggregates 99.73949187861308 us/op 98.99887372272732 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedParen 64.96059698600216 us/op 69.97759753841916 us/op 0.93
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNamePivot 64.10680980547689 us/op 62.288963509571104 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery15OrsAndLikes 190.94915646745315 us/op 190.38941529155358 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery30Plus 58.352593174378356 us/op 57.658140095133454 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFunc 111.18173380839112 us/op 112.86605365993587 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFuncInProjection 78.78078235139803 us/op 78.17625269536028 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryList 70.38025657828373 us/op 69.05157143655478 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryNestedSelect 138.32603278100285 us/op 135.83191265713182 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuerySimple 11.897636879919308 us/op 11.85590022748917 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralJoins 78.63338483793552 us/op 81.57730209093421 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralProjections 62.306334353747744 us/op 62.58387378145956 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralSelect 115.03795231292864 us/op 115.97635539215335 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSimpleInsert 21.704966995415173 us/op 21.66220434715546 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeJoins 20.86611502967012 us/op 20.006189637181492 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeProjections 18.00814261402767 us/op 18.280521644326814 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeSelect 36.22867864499045 us/op 34.90111208457214 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameTimeZone 7.198121182726704 us/op 7.402323417236529 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery 462.5025786447932 us/op 461.1436462132398 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery01 1120.672619479668 us/op 1135.2150371854486 us/op 0.99

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

Please sign in to comment.