Skip to content

Commit

Permalink
Make all IR fields use @JvmField (#1242)
Browse files Browse the repository at this point in the history
  • Loading branch information
RCHowell authored Oct 18, 2023
1 parent a3199cf commit a602fee
Show file tree
Hide file tree
Showing 28 changed files with 1,894 additions and 673 deletions.
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ Thank you to all who have contributed!
## [Unreleased]

### Added
- 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

### Changed

Expand All @@ -36,12 +39,14 @@ Thank you to all who have contributed!
### Fixed

### Removed
- [Breaking] Removed IR factory in favor of static top-level functions. Change `Ast.foo()`
to `foo()`

### Security

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

## [0.13.2-alpha] - 2023-09-29

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,14 @@ package org.partiql.sprout.generator.target.kotlin

import com.squareup.kotlinpoet.AnnotationSpec
import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.CodeBlock
import com.squareup.kotlinpoet.FunSpec
import com.squareup.kotlinpoet.KModifier
import com.squareup.kotlinpoet.ParameterSpec
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.TypeSpec
import com.squareup.kotlinpoet.asTypeName
import net.pearx.kasechange.toCamelCase
import org.partiql.sprout.generator.Generator
import org.partiql.sprout.generator.target.kotlin.poems.KotlinBuilderPoem
import org.partiql.sprout.generator.target.kotlin.poems.KotlinFactoryPoem
import org.partiql.sprout.generator.target.kotlin.poems.KotlinJacksonPoem
import org.partiql.sprout.generator.target.kotlin.poems.KotlinListenerPoem
import org.partiql.sprout.generator.target.kotlin.poems.KotlinUtilsPoem
Expand All @@ -21,14 +19,16 @@ import org.partiql.sprout.generator.target.kotlin.spec.KotlinNodeSpec
import org.partiql.sprout.generator.target.kotlin.spec.KotlinUniverseSpec
import org.partiql.sprout.model.TypeDef
import org.partiql.sprout.model.TypeProp
import org.partiql.sprout.model.TypeRef
import org.partiql.sprout.model.Universe

/**
* Generates and applies
*/
class KotlinGenerator(private val options: KotlinOptions) : Generator<KotlinResult> {

// @JvmField
private val jvmField = AnnotationSpec.builder(JvmField::class).build()

override fun generate(universe: Universe): KotlinResult {

// --- Initialize an empty symbol table(?)
Expand All @@ -39,6 +39,7 @@ class KotlinGenerator(private val options: KotlinOptions) : Generator<KotlinResu
val poems = options.poems.map {
when (it) {
"visitor" -> KotlinVisitorPoem(symbols)
"factory" -> KotlinFactoryPoem(symbols)
"builder" -> KotlinBuilderPoem(symbols)
"listener" -> KotlinListenerPoem(symbols)
"jackson" -> KotlinJacksonPoem(symbols)
Expand All @@ -51,12 +52,19 @@ class KotlinGenerator(private val options: KotlinOptions) : Generator<KotlinResu
val spec = KotlinUniverseSpec(
universe = universe,
nodes = universe.nodes(symbols),
base = TypeSpec.interfaceBuilder(symbols.base),
base = TypeSpec.classBuilder(symbols.base).addModifiers(KModifier.ABSTRACT),
types = universe.types(symbols)
)
val specs = with(spec) {
// Add identifiers
base.addProperty(PropertySpec.builder("_id", String::class).addModifiers(KModifier.ABSTRACT).build())
// Add optional tags
base.addProperty(
PropertySpec.builder("tag", String::class)
.addAnnotation(jvmField)
.mutable(true)
.initializer("\"${symbols.rootId}-\${%S.format(%T.nextInt())}\"", "%06x", ClassName("kotlin.random", "Random"))
.build()
)

// Apply each poem
poems.forEach { it.apply(this) }
// Finalize each spec/builder
Expand Down Expand Up @@ -85,7 +93,7 @@ class KotlinGenerator(private val options: KotlinOptions) : Generator<KotlinResu
*/
private fun Universe.nodes(symbols: KotlinSymbols): List<KotlinNodeSpec> =
types.mapNotNull { it.generate(symbols) }.map {
it.builder.addSuperinterface(symbols.base)
it.builder.superclass(symbols.base)
it
}

Expand All @@ -108,34 +116,41 @@ class KotlinGenerator(private val options: KotlinOptions) : Generator<KotlinResu
* Product Node Generation
*/
private fun TypeDef.Product.generate(symbols: KotlinSymbols): KotlinNodeSpec {
val clazz = symbols.clazz(ref)
val clazzImpl = ClassName(
packageName = clazz.packageName + ".impl",
simpleNames = listOf(symbols.pascal(ref) + "Impl"),
)
return KotlinNodeSpec.Product(
product = this,
props = props.map { KotlinNodeSpec.Prop(it.name.toCamelCase(), symbols.typeNameOf(it.ref)) },
implClazz = clazzImpl,
impl = TypeSpec.classBuilder(clazzImpl),
nodes = children.mapNotNull { it.generate(symbols) },
clazz = symbols.clazz(ref),
ext = (props.enumProps(symbols) + types.enums(symbols)).toMutableList(),
).apply {
// Add id to impl
impl.addProperty(symbols.idProp)
constructor.addParameter(symbols.idPara)

props.forEach {
val para = ParameterSpec.builder(it.name, it.type).build()
val prop = PropertySpec.builder(it.name, it.type).build()
builder.addProperty(prop.toBuilder().addModifiers(KModifier.ABSTRACT).build())
impl.addProperty(prop.toBuilder().addModifiers(KModifier.OVERRIDE).initializer(it.name).build())
val prop = PropertySpec.builder(it.name, it.type)
.initializer(it.name)
.addAnnotation(jvmField)
.build()
builder.addProperty(prop)
constructor.addParameter(para)
}

// Add `tag` field to all nodes

// HACK FOR EMPTY DATA CLASSES
if (props.isEmpty()) {
val name = " "
val type = Char::class
val para = ParameterSpec.builder(name, type).defaultValue("' '").build()
val prop = PropertySpec.builder(name, type)
.initializer("` `")
.addAnnotation(jvmField)
.build()
builder.addProperty(prop)
constructor.addParameter(para)
}
// impls are open
impl.superclass(clazz)
nodes.forEach { it.builder.addSuperinterface(symbols.base) }
this.addDataClassMethods(symbols, ref)

nodes.forEach { it.builder.superclass(symbols.base) }
builder.primaryConstructor(constructor.build())
}
}

Expand All @@ -149,16 +164,15 @@ class KotlinGenerator(private val options: KotlinOptions) : Generator<KotlinResu
clazz = symbols.clazz(ref),
ext = types.enums(symbols).toMutableList(),
).apply {
variants.forEach { it.builder.addSuperinterface(clazz) }
nodes.forEach { it.builder.addSuperinterface(symbols.base) }
variants.forEach { it.builder.superclass(clazz) }
nodes.forEach { it.builder.superclass(symbols.base) }
}

/**
* Enum constant generation
*/
private fun TypeDef.Enum.generate(symbols: KotlinSymbols) =
TypeSpec.enumBuilder(symbols.clazz(ref)).apply {
addFunction(enumToStringSpec(symbols.pascal(ref)))
values.forEach { addEnumConstant(it) }
}.build()

Expand All @@ -172,121 +186,4 @@ class KotlinGenerator(private val options: KotlinOptions) : Generator<KotlinResu
private fun List<TypeDef>.enums(symbols: KotlinSymbols) = filterIsInstance<TypeDef.Enum>().map {
it.generate(symbols)
}

// TODO generate hashCode, equals, componentN so we can have OPEN internal implementations
private fun KotlinNodeSpec.Product.addDataClassMethods(symbols: KotlinSymbols, ref: TypeRef.Path) {
impl.addModifiers(KModifier.INTERNAL, KModifier.OPEN)
addEqualsMethod()
addHashCodeMethod()
addToStringMethod(symbols, ref)
val args = listOf("_id") + props.map { it.name }
val copy = FunSpec.builder("copy").addModifiers(KModifier.ABSTRACT).returns(clazz)
val copyImpl = FunSpec.builder("copy")
.addModifiers(KModifier.OVERRIDE)
.returns(clazz)
.addStatement("return %T(${args.joinToString()})", implClazz)
props.forEach {
val para = ParameterSpec.builder(it.name, it.type).build()
copy.addParameter(para.toBuilder().defaultValue("this.${it.name}").build())
copyImpl.addParameter(para)
}
builder.addFunction(copy.build())
impl.addFunction(copyImpl.build())
}

/**
* Adds `equals` method to the core abstract class
*/
private fun KotlinNodeSpec.Product.addEqualsMethod() {
val equalsFunctionBodyBuilder = CodeBlock.builder().let { body ->
body.addStatement("if (this === other) return true")
body.addStatement("if (other !is %T) return false", this.clazz)
this.props.forEach { prop ->
body.addStatement("if (%N != other.%N) return false", prop.name, prop.name)
}
body.addStatement("return true")
}
builder.addFunction(
FunSpec.builder("equals").addModifiers(KModifier.OVERRIDE).returns(Boolean::class)
.addParameter(ParameterSpec.builder("other", Any::class.asTypeName().copy(nullable = true)).build())
.addCode(equalsFunctionBodyBuilder.build())
.build()
)
}

/**
* Adds `hashCode` method to the core abstract class
*/
private fun KotlinNodeSpec.Product.addHashCodeMethod() {
val hashcodeBodyBuilder = CodeBlock.builder().let { body ->
when (this.props.size) {
0 -> body.addStatement("return 0")
1 -> body.addStatement("return %N.hashCode()", this.props.first().name)
else -> {
body.addStatement("var result = %N.hashCode()", this.props.first().name)
this.props.subList(1, this.props.size).forEach { prop ->
body.addStatement("result = 31 * result + %N.hashCode()", prop.name)
}
body.addStatement("return result")
}
}
body
}
builder.addFunction(
FunSpec.builder("hashCode")
.addModifiers(KModifier.OVERRIDE)
.returns(Int::class)
.addCode(hashcodeBodyBuilder.build())
.build()
)
}

private fun enumToStringSpec(base: String): FunSpec {
val bodyBuilder = CodeBlock.builder().let { body ->
val str = "$base::\${super.toString()}"
body.addStatement("return %P", str)
body
}
return FunSpec.builder("toString")
.addModifiers(KModifier.OVERRIDE)
.returns(String::class)
.addCode(bodyBuilder.build())
.build()
}

/**
* Adds `toString` method to the core abstract class. We write it in Ion syntax, however, it is NOT a contract
* and therefore subject to failure.
*
* Notably, the following don't format to Ion:
* - Maps
* - Imported Types
* - Escape Characters
*/
private fun KotlinNodeSpec.Product.addToStringMethod(symbols: KotlinSymbols, ref: TypeRef.Path) {
val annotation = symbols.pascal(ref)
val thiz = this
val bodyBuilder = CodeBlock.builder().let { body ->
val returnString = buildString {
append("$annotation::{")
thiz.props.forEach { prop ->
if (String::class.asTypeName() == prop.type) {
append("${prop.name}: \"\$${prop.name}\",")
} else {
append("${prop.name}: \$${prop.name},")
}
}
append("}")
}
body.addStatement("return %P", returnString)
body
}
builder.addFunction(
FunSpec.builder("toString")
.addModifiers(KModifier.OVERRIDE)
.returns(String::class)
.addCode(bodyBuilder.build())
.build()
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,13 @@ import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.DOUBLE
import com.squareup.kotlinpoet.FLOAT
import com.squareup.kotlinpoet.INT
import com.squareup.kotlinpoet.KModifier
import com.squareup.kotlinpoet.LIST
import com.squareup.kotlinpoet.LONG
import com.squareup.kotlinpoet.MAP
import com.squareup.kotlinpoet.MUTABLE_LIST
import com.squareup.kotlinpoet.MUTABLE_MAP
import com.squareup.kotlinpoet.MUTABLE_SET
import com.squareup.kotlinpoet.ParameterSpec
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.SET
import com.squareup.kotlinpoet.STRING
import com.squareup.kotlinpoet.TypeName
Expand Down Expand Up @@ -54,16 +51,6 @@ class KotlinSymbols private constructor(
*/
val base: ClassName = ClassName(rootPackage, "${rootId}Node")

/**
* Id Property for interfaces and classes
*/
val idProp = PropertySpec.builder("_id", String::class).addModifiers(KModifier.OVERRIDE).initializer("_id").build()

/**
* Id Parameter for internal constructors
*/
val idPara = ParameterSpec.builder("_id", String::class).build()

/**
* Memoize converting a TypeRef.Path to a camel case identifier to be used as method/function names
*/
Expand Down
Loading

1 comment on commit a602fee

@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: a602fee Previous: a3199cf Ratio
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithInterruptible 391.65363555344123 us/op 403.64661997760896 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithoutInterruptible 390.49344195164537 us/op 378.84452124761646 us/op 1.03
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithInterruptible 343.86246781285115 us/op 330.9838065386728 us/op 1.04
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithoutInterruptible 341.519570939518 us/op 339.77474603948457 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithInterruptible 254.37095509796117 us/op 240.37009357301423 us/op 1.06
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithoutInterruptible 252.13078182680383 us/op 250.9382874656404 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithInterruptible 8519650.073749999 us/op 7232099.7964 us/op 1.18
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithoutInterruptible 8658335.342249999 us/op 7306668.20345 us/op 1.18
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithInterruptible 62.462989225780305 us/op 59.726626773511455 us/op 1.05
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithoutInterruptible 61.42810838074229 us/op 60.24623941580313 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithInterruptible 8683430.2388 us/op 7264499.207249999 us/op 1.20
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithoutInterruptible 8663003.940900002 us/op 7220735.6307 us/op 1.20
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithInterruptible 145313.74370714286 us/op 130584.79814375001 us/op 1.11
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithoutInterruptible 140627.1587 us/op 133355.05224375 us/op 1.05
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 124.42393994364735 us/op 126.54412835011154 us/op 0.98
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 233.84364983924425 us/op 242.57472723315783 us/op 0.96
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 560467.038525 us/op 517215.79764999996 us/op 1.08
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 1094912.6780000003 us/op 858937.4620999999 us/op 1.27
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 10875946.127099998 us/op 10112386.083999999 us/op 1.08
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 193.61659693920163 us/op 207.93317883409628 us/op 0.93
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 365.6228579887729 us/op 380.48643661060134 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 46.08313733896914 us/op 42.83215010604752 us/op 1.08
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 62.77121570306798 us/op 57.59595014267776 us/op 1.09
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 327.06481246932333 us/op 288.9398869574919 us/op 1.13
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 568.8368575568336 us/op 480.94324594478667 us/op 1.18
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 212.9053888443479 us/op 222.36565794142584 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 70.0520907854637 us/op 67.88792330956082 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 50.113055531951176 us/op 47.062720837533874 us/op 1.06
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 44.74291903021229 us/op 44.30599868157636 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 71.51859542012203 us/op 68.62427678940894 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 51.49702739158861 us/op 47.36680336380544 us/op 1.09
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 73.45442860384652 us/op 71.08331929273572 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 67.4797584753056 us/op 64.07984649981015 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 116.91598614268295 us/op 110.48947625636018 us/op 1.06
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 22.52711389170062 us/op 19.41564932596017 us/op 1.16
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 73.4865999419123 us/op 71.73136160960138 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 217.2158430634557 us/op 220.13051676013646 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 121.25101011318377 us/op 115.13118124977946 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 54.59169610684454 us/op 52.83577946930727 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 62.5709117544093 us/op 55.88322976688776 us/op 1.12
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 85.44483978289124 us/op 81.0275350461584 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 796.943461599989 us/op 708.3536210025235 us/op 1.13
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 20.225640233158835 us/op 17.59629634399477 us/op 1.15
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 26.55848092677034 us/op 24.35022968990006 us/op 1.09
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 81.29261738890412 us/op 76.9083481844025 us/op 1.06
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 217.12671234741862 us/op 210.75143968739266 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 35.15304480028582 us/op 31.693743250862855 us/op 1.11
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 26.791040334733232 us/op 24.27232806142942 us/op 1.10
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 35.62383544448314 us/op 32.27450626187827 us/op 1.10
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 57.110248126523445 us/op 54.00668371863679 us/op 1.06
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 29.92993856951576 us/op 26.152325540872653 us/op 1.14
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 285.01260146634706 us/op 270.8334784772631 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 1081.0859859564905 us/op 1037.3999452270828 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 29.776231530935235 us/op 29.994345414709482 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 254.8010654368702 us/op 246.5346636477871 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 119.394208382507 us/op 118.96395896842844 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 242.0445000123028 us/op 251.31803524826879 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 72.04804862028817 us/op 71.24366652783206 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 42.3492357954278 us/op 42.29967869772042 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 43.58691906028541 us/op 46.061584818654396 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 72.62163712399357 us/op 81.49171076227701 us/op 0.89
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 36.93898413832348 us/op 37.11985457557681 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 138.5499314262544 us/op 157.21582168741352 us/op 0.88
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 48.96105519442385 us/op 49.85893814729169 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 100.48628806795347 us/op 102.79373983416221 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 92.1957169966826 us/op 89.37044832983221 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 71.11293749601911 us/op 73.08153988530566 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 193.45272841904097 us/op 199.85997039605348 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 69.12774301910993 us/op 71.03802406846991 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 142.1126410825505 us/op 135.54628238221227 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 100.54617265708134 us/op 98.08312549975285 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 87.58834620730957 us/op 87.08718709647756 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 139.94827053351867 us/op 141.13748332718438 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 14.68103986024649 us/op 14.158035357000154 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 81.51621791829743 us/op 82.79116114496044 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 60.408226297448664 us/op 65.01985680564579 us/op 0.93
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 126.60164783222645 us/op 117.88590101409238 us/op 1.07
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 25.32285952188215 us/op 24.15886524378299 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 24.289752054043053 us/op 23.836272264951994 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 20.94603263119764 us/op 21.02021835970992 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 38.47700829890813 us/op 39.2227788993204 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 10.75437643792964 us/op 10.035877201844219 us/op 1.07
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 455.4256117896445 us/op 479.3560946696536 us/op 0.95
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 1364.9189656901033 us/op 1263.2154185477243 us/op 1.08
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 10.788183565833176 us/op 10.783861397503577 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 2.5386219855287075 us/op 2.8577561520836934 us/op 0.89
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 13.597847038731643 us/op 13.536872106547339 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameCaseWhenThen 45.81440314987054 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery 63.145145825979185 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery01 326.05105032851793 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery02 584.1159938173844 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExceptUnionIntersectSixty 218.206446054027 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExec20Expressions 68.50074690996738 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameFromLet 48.33607705732332 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPattern 46.74812894300297 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPreFilters 73.94183850261483 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGroupLimit 50.81992280192307 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameLongFromSourceOrderBy 76.33387857191458 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameManyJoins 66.84562315841032 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedAggregates 119.10589378808781 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedParen 22.424909897864527 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNamePivot 73.81977942482168 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery15OrsAndLikes 232.39620890767497 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery30Plus 122.7520360723054 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFunc 58.05085360667906 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFuncInProjection 62.325122733584294 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryList 86.55635705840379 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryNestedSelect 829.7247626492408 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuerySimple 20.013097052094913 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralJoins 26.399497281815417 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralProjections 77.79270516738445 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralSelect 223.7686352131081 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSimpleInsert 33.87857903074854 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeJoins 26.038200579782263 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeProjections 34.26436181067347 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeSelect 57.529974554857745 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameTimeZone 29.510013999536664 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery 283.051785152076 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery01 1078.2987522152418 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameCaseWhenThen 34.704535669192936 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery01 153.31360677009923 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExceptUnionIntersectSixty 344.8753310069446 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExec20Expressions 90.75280085192915 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameFromLet 55.345478199257556 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPattern 60.102024841176174 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPreFilters 102.3332049661834 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGroupLimit 38.80729901678978 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameLongFromSourceOrderBy 161.33744703377866 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameManyJoins 57.30081848111655 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedAggregates 128.94915931436154 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedParen 100.62678129851649 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNamePivot 90.28513077837776 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery15OrsAndLikes 245.45260051945712 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery30Plus 85.02995970032839 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFunc 158.6969560414537 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFuncInProjection 113.15885437087502 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryList 102.41755213455153 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryNestedSelect 174.75281738375696 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuerySimple 18.119213648968245 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralJoins 102.05268351324393 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralProjections 85.1984472085024 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralSelect 157.87858130932446 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSimpleInsert 30.14320216774833 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeJoins 29.382923984386956 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeProjections 27.44230001479685 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeSelect 48.718341641894796 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameTimeZone 12.333035496941251 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery 615.288041743748 us/op
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery01 1621.7981792624646 us/op

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

Please sign in to comment.