Skip to content

Commit

Permalink
Merge pull request #1274 from partiql/fix-interrupt
Browse files Browse the repository at this point in the history
  • Loading branch information
johnedquinn authored Dec 1, 2023
2 parents 7e3625f + dff43e8 commit 6f6eb70
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 104 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ Thank you to all who have contributed!
### Deprecated

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

### Removed
- [Breaking] Removed IR factory in favor of static top-level functions. Change `Ast.foo()`
Expand All @@ -48,6 +49,7 @@ Thank you to all who have contributed!
### Contributors
Thank you to all who have contributed!
- @rchowell
- @johnedquinn

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,20 +27,24 @@ import java.util.concurrent.atomic.AtomicBoolean
*/
internal class RunnablePipeline(
private val inputs: BlockingQueue<Input>,
private val results: BlockingQueue<PartiQLResult>,
private val results: BlockingQueue<Output>,
val pipeline: AbstractPipeline,
private val doneCompiling: AtomicBoolean
) : Runnable {
/**
* When the Thread running this [Runnable] is interrupted, the underlying [AbstractPipeline] should catch the
* interruption and fail with some exception. Then, this will break out of [run].
* interruption and fail with some exception. Then, we place the error (or result) in the output queue.
*/
override fun run() {
while (true) {
val input = inputs.poll(3, TimeUnit.SECONDS)
if (input != null) {
val result = pipeline.compile(input.input, input.session)
results.put(result)
try {
val result = pipeline.compile(input.input, input.session)
results.put(Output.Result(result))
} catch (t: Throwable) {
results.put(Output.Error(t))
}
doneCompiling.set(true)
}
}
Expand All @@ -53,4 +57,9 @@ internal class RunnablePipeline(
val input: String,
val session: EvaluationSession
)

internal sealed interface Output {
data class Result(val result: PartiQLResult) : Output
data class Error(val throwable: Throwable) : Output
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@

package org.partiql.cli.shell

import org.partiql.cli.format.ExplainFormatter
import org.partiql.lang.eval.EvaluationException
import org.partiql.lang.eval.ExprValue
import org.partiql.lang.eval.PartiQLResult
import org.partiql.lang.util.ExprValueFormatter
import java.io.PrintStream
import java.util.concurrent.BlockingQueue
Expand All @@ -28,7 +31,7 @@ import java.util.concurrent.atomic.AtomicBoolean
internal class RunnableWriter(
private val out: PrintStream,
private val formatter: ExprValueFormatter,
private val values: BlockingQueue<ExprValue>,
private val values: BlockingQueue<RunnablePipeline.Output>,
private val donePrinting: AtomicBoolean
) : Runnable {

Expand All @@ -42,11 +45,53 @@ internal class RunnableWriter(
while (true) {
val value = values.poll(3, TimeUnit.SECONDS)
if (value != null) {
when (value) {
is RunnablePipeline.Output.Result -> try {
printResult(value.result)
} catch (t: Throwable) { printThrowable(t) }
is RunnablePipeline.Output.Error -> printThrowable(value.throwable)
}
out.flush()
donePrinting.set(true)
}
}
}

@Throws(Throwable::class)
private fun printResult(result: PartiQLResult) {
when (result) {
is PartiQLResult.Value -> {
out.info(BAR_1)
formatter.formatTo(value, out)
formatter.formatTo(result.value, out)
out.println()
out.info(BAR_2)
donePrinting.set(true)
out.success("OK!")
}
is PartiQLResult.Explain.Domain -> {
val explain = ExplainFormatter.format(result)
out.println(explain)
out.success("OK!")
}
is PartiQLResult.Insert,
is PartiQLResult.Replace,
is PartiQLResult.Delete -> {
out.warn("Insert/Replace/Delete are not yet supported")
}
}
}

private fun printThrowable(t: Throwable) {
out.println()
when (t) {
is EvaluationException -> {
out.error(t.generateMessage())
out.error(t.message)
}
is InterruptedException -> {
out.info("This has been interrupted!")
}
else -> {
out.error(t.message ?: "ERROR encountered. However, no message was attached.")
}
}
}
Expand Down
148 changes: 51 additions & 97 deletions partiql-cli/src/main/kotlin/org/partiql/cli/shell/Shell.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ import org.partiql.cli.format.ExplainFormatter
import org.partiql.cli.pipeline.AbstractPipeline
import org.partiql.lang.SqlException
import org.partiql.lang.eval.Bindings
import org.partiql.lang.eval.EvaluationException
import org.partiql.lang.eval.EvaluationSession
import org.partiql.lang.eval.ExprValue
import org.partiql.lang.eval.PartiQLResult
Expand Down Expand Up @@ -104,8 +103,8 @@ private val EXIT_DELAY: Duration = Duration(3000)
*/

val exiting = AtomicBoolean(false)
val doneCompiling = AtomicBoolean(false)
val donePrinting = AtomicBoolean(false)
val doneCompiling = AtomicBoolean(true)
val donePrinting = AtomicBoolean(true)

internal class Shell(
output: OutputStream,
Expand All @@ -120,9 +119,9 @@ internal class Shell(
private val currentUser = System.getProperty("user.name")

private val inputs: BlockingQueue<RunnablePipeline.Input> = ArrayBlockingQueue(1)
private val results: BlockingQueue<PartiQLResult> = ArrayBlockingQueue(1)
private val results: BlockingQueue<RunnablePipeline.Output> = ArrayBlockingQueue(1)
private var pipelineService: ExecutorService = Executors.newFixedThreadPool(1)
private val values: BlockingQueue<ExprValue> = ArrayBlockingQueue(1)
private val values: BlockingQueue<RunnablePipeline.Output> = ArrayBlockingQueue(1)
private var printingService: ExecutorService = Executors.newFixedThreadPool(1)

fun start() {
Expand Down Expand Up @@ -232,9 +231,19 @@ internal class Shell(
arg,
locals,
exiting
) as PartiQLResult.Value
globals.add(result.value.bindings)
result
)
when (result) {
is RunnablePipeline.Output.Result -> {
when (result.result) {
is PartiQLResult.Value -> {
globals.add(result.result.value.bindings)
result
}
else -> RunnablePipeline.Output.Error(IllegalStateException("Need to pass VALUE to !add_to_global_env"))
}
}
is RunnablePipeline.Output.Error -> { result }
}
}
continue
}
Expand All @@ -252,7 +261,9 @@ internal class Shell(
continue
}
"!global_env" -> {
executeAndPrint { AbstractPipeline.convertExprValue(globals.asExprValue()) }
executeAndPrint {
RunnablePipeline.Output.Result(AbstractPipeline.convertExprValue(globals.asExprValue()))
}
continue
}
"!clear" -> {
Expand All @@ -277,6 +288,7 @@ internal class Shell(
val locals = refreshBindings()
evaluatePartiQL(line, locals, exiting)
}
waitUntil(true, donePrinting)
}
out.println("Thanks for using PartiQL!")
}
Expand Down Expand Up @@ -328,26 +340,19 @@ internal class Shell(
textPartiQL: String,
bindings: Bindings<ExprValue>,
exiting: AtomicBoolean
): PartiQLResult {
doneCompiling.set(false)
inputs.put(
RunnablePipeline.Input(
textPartiQL,
EvaluationSession.build {
globals(bindings)
user(currentUser)
}
): RunnablePipeline.Output {
catchCancellation(doneCompiling, exiting, pipelineService) {
inputs.put(
RunnablePipeline.Input(
textPartiQL,
EvaluationSession.build {
globals(bindings)
user(currentUser)
}
)
)
)
return catchCancellation(
doneCompiling,
exiting,
pipelineService,
PartiQLResult.Value(value = ExprValue.newString("Compilation cancelled."))
) {
pipelineService = Executors.newFixedThreadPool(1)
pipelineService.submit(RunnablePipeline(inputs, results, compiler, doneCompiling))
} ?: results.poll(5, TimeUnit.SECONDS)!!
}
return results.poll(5, TimeUnit.SECONDS)!!
}

private fun bringGraph(name: String, graphIonText: String) {
Expand All @@ -361,88 +366,31 @@ internal class Shell(
}
}

private fun executeAndPrint(func: () -> PartiQLResult) {
val result: PartiQLResult? = try {
func.invoke()
} catch (ex: SqlException) {
out.error(ex.generateMessage())
out.error(ex.message)
null // signals that there was an error
} catch (ex: NotImplementedError) {
out.error(ex.message ?: "kotlin.NotImplementedError was raised")
null // signals that there was an error
}
printPartiQLResult(result)
}

private fun printPartiQLResult(result: PartiQLResult?) {
when (result) {
null -> {
out.error("ERROR!")
}
is PartiQLResult.Value -> {
try {
donePrinting.set(false)
values.put(result.value)
catchCancellation(donePrinting, exiting, printingService, 1) {
printingService = Executors.newFixedThreadPool(1)
printingService.submit(
RunnableWriter(
out,
ConfigurableExprValueFormatter.pretty,
values,
donePrinting
)
)
}
} catch (ex: EvaluationException) { // should not need to do this here; see https://github.com/partiql/partiql-lang-kotlin/issues/1002
out.error(ex.generateMessage())
out.error(ex.message)
return
}
out.success("OK!")
}
is PartiQLResult.Explain.Domain -> {
val explain = ExplainFormatter.format(result)
out.println(explain)
out.success("OK!")
}
is PartiQLResult.Insert,
is PartiQLResult.Replace,
is PartiQLResult.Delete -> {
out.warn("Insert/Replace/Delete are not yet supported")
}
private fun executeAndPrint(func: () -> RunnablePipeline.Output) {
catchCancellation(donePrinting, exiting, printingService) {
values.put(func.invoke())
}
out.flush()
}

/**
* If nothing was caught and execution finished: return null
* If something was caught: resets service and returns defaultReturn
*/
private fun <T> catchCancellation(
private fun catchCancellation(
doneExecuting: AtomicBoolean,
cancellationFlag: AtomicBoolean,
service: ExecutorService,
defaultReturn: T,
resetService: () -> Unit
): T? {
addToQueue: () -> Unit
) {
doneExecuting.set(false)
addToQueue.invoke()
while (!doneExecuting.get()) {
if (exiting.get()) {
service.shutdown()
service.shutdownNow()
when (service.awaitTermination(2, TimeUnit.SECONDS)) {
true -> {
cancellationFlag.set(false)
doneExecuting.set(false)
resetService()
return defaultReturn
}
false -> throw Exception("Printing service couldn't terminate")
}
cancellationFlag.set(false)
}
}
return null
}

private fun retrievePartiQLVersionAndHash(): String {
Expand Down Expand Up @@ -471,6 +419,12 @@ internal class Shell(
}
}

private fun waitUntil(until: Boolean, actual: AtomicBoolean) {
while (actual.get() != until) {
// Do nothing
}
}

/**
* A configuration class representing any configurations specified by the user
* @param isMonochrome specifies the removal of syntax highlighting
Expand All @@ -496,13 +450,13 @@ private fun History.Entry.pretty(): String {

private fun ansi(string: String, style: AttributedStyle) = AttributedString(string, style).toAnsi()

private fun PrintStream.success(string: String) = this.println(ansi(string, SUCCESS))
fun PrintStream.success(string: String) = this.println(ansi(string, SUCCESS))

private fun PrintStream.error(string: String) = this.println(ansi(string, ERROR))
internal fun PrintStream.error(string: String) = this.println(ansi(string, ERROR))

internal fun PrintStream.info(string: String) = this.println(ansi(string, INFO))

private fun PrintStream.warn(string: String) = this.println(ansi(string, WARN))
fun PrintStream.warn(string: String) = this.println(ansi(string, WARN))

private class ThreadInterrupter : Closeable {
private val thread = Thread.currentThread()
Expand Down

1 comment on commit 6f6eb70

@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: 6f6eb70 Previous: 7e3625f Ratio
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithInterruptible 272.939420636338 us/op 260.36680399899313 us/op 1.05
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithoutInterruptible 296.8528221440777 us/op 277.2137357670558 us/op 1.07
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithInterruptible 231.47540949204364 us/op 247.09271979627752 us/op 0.94
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithoutInterruptible 237.0619845250157 us/op 257.49510565231543 us/op 0.92
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithInterruptible 184.93894266321664 us/op 185.93380702575087 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithoutInterruptible 180.55349981080184 us/op 182.5577886145169 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithInterruptible 13281266.369300002 us/op 12859275.069800003 us/op 1.03
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithoutInterruptible 13358158.469349999 us/op 13136733.861149998 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithInterruptible 5150652.127 us/op 5102455.48605 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithoutInterruptible 4878357.37155 us/op 5101596.23405 us/op 0.96
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithInterruptible 38.36478305566007 us/op 39.16702520426296 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithoutInterruptible 38.186633830515675 us/op 38.088455869909794 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithInterruptible 13379363.29525 us/op 13244411.051649999 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithoutInterruptible 13073335.508350002 us/op 13095549.86075 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithInterruptible 5070788.5437 us/op 5159717.960750001 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithoutInterruptible 4977260.814 us/op 4905252.590199999 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithInterruptible 94928.99769545454 us/op 95719.32148181819 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithoutInterruptible 96580.55767954547 us/op 95751.99621590908 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 82.02981422921913 us/op 77.72721377905147 us/op 1.06
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 155.32154367125563 us/op 154.11971933462718 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 380262.36841666664 us/op 382430.81723333336 us/op 0.99
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 724842.58825 us/op 640715.17255 us/op 1.13
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 7191651.257500002 us/op 7399501.478499999 us/op 0.97
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 129.0536789103998 us/op 132.37519350515035 us/op 0.97
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 244.3821958462715 us/op 267.3360908040768 us/op 0.91
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 33.39498884620449 us/op 33.82237703601857 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 41.417408328399965 us/op 40.30117909177167 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 221.05858005563854 us/op 223.74874030946458 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 373.4330891604737 us/op 379.1856651758661 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 156.7659217579199 us/op 155.4565195529123 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 45.664002203887 us/op 49.14058121327577 us/op 0.93
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 33.89464996085641 us/op 33.915717459265714 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 32.55511008551693 us/op 32.17097049387461 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 58.57035793810735 us/op 55.649178136313466 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 38.768582054263575 us/op 39.431754102210704 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 48.03284430084576 us/op 46.69099483583687 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 49.88624298426381 us/op 48.31980320984581 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 84.99401531767577 us/op 84.44949768461825 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 13.562248316651125 us/op 13.378025702619357 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 50.692072850311554 us/op 50.628852058110915 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 155.9216744602099 us/op 154.1261585046645 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 86.71530876466197 us/op 85.98743898941692 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 37.74400378750755 us/op 37.75722789113663 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 42.43953758755478 us/op 42.86001576953384 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 58.75074145354218 us/op 60.35993489755502 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 542.6369462098878 us/op 547.6371739255128 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 12.264737848281271 us/op 11.99365753858411 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 16.8168192632193 us/op 16.34117144927424 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 55.35275379656309 us/op 57.459237919692896 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 158.21507957827757 us/op 155.84104248987694 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 23.66773539701682 us/op 22.585768537308063 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 16.523460165935585 us/op 16.4658538838866 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 23.57449082514477 us/op 22.40260369746081 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 40.19413863854283 us/op 40.16009952766315 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 19.829348725677395 us/op 18.599660285195505 us/op 1.07
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 198.54444453104037 us/op 200.59708863650394 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 780.3937705614001 us/op 760.7941172254912 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 18.518330220706662 us/op 17.88021662597066 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 187.49962240513642 us/op 182.52651388995264 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 87.67653157847717 us/op 83.88912662873591 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 164.71023004214553 us/op 162.04501106540326 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 46.037578909647486 us/op 46.80210660535376 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 27.94843677439938 us/op 27.338561634991983 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 31.887945162813338 us/op 30.285081777679647 us/op 1.05
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 54.187696388371194 us/op 54.51720580937972 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 24.970638413469224 us/op 25.56765365905365 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 98.85844034326325 us/op 96.38027939597535 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 33.19544247575394 us/op 33.80591721979533 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 70.59994338606582 us/op 71.61773938563654 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 60.51076123470938 us/op 61.45230094823254 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 48.46330869530025 us/op 48.174744190757174 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 130.66023103725917 us/op 128.7978331439556 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 46.92568466241605 us/op 45.962409154876795 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 96.99703285288845 us/op 96.0204533852559 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 63.87844642564029 us/op 66.15434457452105 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 58.375394483588046 us/op 57.723948999934976 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 107.90595262057244 us/op 105.45433597621982 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 8.5581022380327 us/op 8.49445512115803 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 53.29446795240036 us/op 54.29974703159674 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 39.95195209908942 us/op 40.85737732121855 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 75.93533558007368 us/op 74.87711311617826 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 14.766359652530713 us/op 14.716555377361829 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 14.871550379257574 us/op 14.614488360779129 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 13.489086334843748 us/op 12.996665934308174 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 24.69435522290872 us/op 24.19059474657247 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 6.216907658666378 us/op 6.018720067807239 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 296.153165534966 us/op 302.03400661809314 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 840.041889186351 us/op 841.0363901281526 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 6.834774257028762 us/op 7.069138999655827 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 2.1304661647388166 us/op 1.9482773939554363 us/op 1.09
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 7.572821197830768 us/op 7.4839649597006 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameCaseWhenThen 32.327008793623676 us/op 32.05992598018359 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery 39.85341024503984 us/op 41.16470640553566 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery01 224.64561319494413 us/op 217.64851734746406 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery02 372.93736726898976 us/op 377.52353315486744 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExceptUnionIntersectSixty 156.10520891537377 us/op 153.6462774252406 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExec20Expressions 44.63633197209188 us/op 45.32731798264909 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameFromLet 32.386501370451406 us/op 32.222822217490766 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPattern 31.030581910819876 us/op 30.75996223566789 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPreFilters 56.69221488581659 us/op 55.73521045729218 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGroupLimit 39.51192806384226 us/op 39.30701819577643 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameLongFromSourceOrderBy 47.749774745999424 us/op 46.82121338163958 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameManyJoins 49.30390525902709 us/op 48.67638982474082 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedAggregates 82.00161078552449 us/op 82.59477662019755 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedParen 13.131492671777597 us/op 12.828816713957556 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNamePivot 50.66696560751478 us/op 49.91728713704925 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery15OrsAndLikes 157.47783222220315 us/op 168.4814756437566 us/op 0.93
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery30Plus 86.15305418726642 us/op 85.367806702932 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFunc 37.81814342135912 us/op 38.160915035535695 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFuncInProjection 41.92519671611046 us/op 41.78887514172327 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryList 59.310979845697204 us/op 57.412405299462606 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryNestedSelect 549.8333851282016 us/op 545.5644601491709 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuerySimple 11.705829536438436 us/op 11.676749177813614 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralJoins 16.310724508445514 us/op 15.951362534923968 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralProjections 54.41104891027803 us/op 54.2340554478673 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralSelect 156.33963389760092 us/op 157.17847759266292 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSimpleInsert 22.13147804869117 us/op 21.73990556752089 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeJoins 16.385176484478674 us/op 16.08613419659534 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeProjections 22.239201971984503 us/op 21.283382067319305 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeSelect 39.203805399043354 us/op 38.95652170756712 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameTimeZone 19.021708002440615 us/op 18.608196317983346 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery 191.2737280841547 us/op 193.12008472250102 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery01 765.8185333914957 us/op 763.9353025414157 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameCaseWhenThen 24.172569771601125 us/op 23.653530353354537 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery01 121.102069870989 us/op 120.37133704299416 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExceptUnionIntersectSixty 268.7710873852081 us/op 265.2628884765284 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExec20Expressions 65.42878112754514 us/op 65.5970988349548 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameFromLet 39.89639191359934 us/op 39.74283690148624 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPattern 47.37544259053447 us/op 45.983523079094624 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPreFilters 77.4471104915385 us/op 78.77471457918526 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGroupLimit 28.723957613759353 us/op 28.119274822812475 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameLongFromSourceOrderBy 118.59706042585478 us/op 114.65378245954707 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameManyJoins 41.581994437416355 us/op 41.95100936982932 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedAggregates 99.81246820077254 us/op 100.89419178601561 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedParen 65.29979129901186 us/op 68.83748965917414 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNamePivot 63.158331606515084 us/op 64.54838723884546 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery15OrsAndLikes 191.45177636186799 us/op 194.59473539105323 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery30Plus 61.466422836488675 us/op 57.46203561547279 us/op 1.07
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFunc 115.95902492270743 us/op 113.40250750545192 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFuncInProjection 81.53363047608272 us/op 78.0820140355092 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryList 70.7536522858514 us/op 69.22494977993975 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryNestedSelect 139.53214391942606 us/op 137.25049605699667 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuerySimple 12.597845479695986 us/op 12.04119402840974 us/op 1.05
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralJoins 77.22782909432729 us/op 80.92669766920318 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralProjections 61.63776082313391 us/op 61.25704033748565 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralSelect 118.9936912208448 us/op 114.10072939947142 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSimpleInsert 22.073712406954872 us/op 22.05816823158789 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeJoins 20.71176748287018 us/op 19.956273091661387 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeProjections 18.277239858367675 us/op 17.617410527925166 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeSelect 36.367754578110564 us/op 36.72505639299803 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameTimeZone 7.498100623694995 us/op 7.236836121070995 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery 463.5002124143592 us/op 474.51270614760614 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery01 1202.1102669166928 us/op 1132.2309894354744 us/op 1.06

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

Please sign in to comment.