Skip to content

Commit

Permalink
Use Iterable for PartiQLValue collections rather than Sequence (#1305)
Browse files Browse the repository at this point in the history
  • Loading branch information
RCHowell authored Dec 14, 2023
1 parent 8076e6c commit 79ee005
Show file tree
Hide file tree
Showing 14 changed files with 298 additions and 260 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ Thank you to all who have contributed!
- The new plan is fully resolved and typed.
- Operators will be converted to function call.
- Changes the return type of `filter_distinct` to a list if input collection is list
- Changes the `PartiQLValue` collections to implement Iterable rather than Sequence, allowing for multiple consumption.

### Deprecated

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,28 +268,42 @@ class ServiceLoaderUtil {
PartiQLValueType.INTERVAL -> TODO()

PartiQLValueType.BAG -> {
(partiqlValue as? BagValue<*>)?.elements?.map { PartiQLtoExprValue(it) }?.let { newBag(it) }
?: ExprValue.nullValue
if (partiqlValue.isNull) {
ExprValue.nullValue
} else {
newBag((partiqlValue as? BagValue<*>)!!.map { PartiQLtoExprValue(it) })
}
}

PartiQLValueType.LIST -> {
(partiqlValue as? ListValue<*>)?.elements?.map { PartiQLtoExprValue(it) }?.let { newList(it) }
?: ExprValue.nullValue
if (partiqlValue.isNull) {
ExprValue.nullValue
} else {
newList((partiqlValue as? ListValue<*>)!!.map { PartiQLtoExprValue(it) })
}
}

PartiQLValueType.SEXP -> {
(partiqlValue as? SexpValue<*>)?.elements?.map { PartiQLtoExprValue(it) }?.let { newSexp(it) }
?: ExprValue.nullValue
if (partiqlValue.isNull) {
ExprValue.nullValue
} else {
newSexp((partiqlValue as? SexpValue<*>)!!.map { PartiQLtoExprValue(it) })
}
}

PartiQLValueType.STRUCT -> {
(partiqlValue as? StructValue<*>)?.fields?.map {
PartiQLtoExprValue(it.second).namedValue(
newString(
it.first
if (partiqlValue.isNull) {
ExprValue.nullValue
} else {
val entries = (partiqlValue as? StructValue<*>)!!.entries
entries.map {
PartiQLtoExprValue(it.second).namedValue(
newString(
it.first
)
)
)
}?.let { newStruct(it, StructOrdering.ORDERED) } ?: ExprValue.nullValue
}.let { newStruct(it, StructOrdering.ORDERED) }
}
}

PartiQLValueType.DECIMAL -> TODO()
Expand Down Expand Up @@ -447,7 +461,7 @@ class ServiceLoaderUtil {
PartiQLValueType.INTERVAL -> TODO()
PartiQLValueType.BAG -> when (exprValue.type) {
ExprValueType.NULL -> bagValue(null)
ExprValueType.BAG -> bagValue(exprValue.map { ExprToPartiQLValue(it, ExprToPartiQLValueType(it)) }.asSequence())
ExprValueType.BAG -> bagValue(exprValue.map { ExprToPartiQLValue(it, ExprToPartiQLValueType(it)) })
else -> throw ExprToPartiQLValueTypeMismatchException(
PartiQLValueType.BAG, ExprToPartiQLValueType(exprValue)
)
Expand All @@ -459,7 +473,7 @@ class ServiceLoaderUtil {
ExprToPartiQLValue(
it, ExprToPartiQLValueType(it)
)
}.asSequence()
}
)
else -> throw ExprToPartiQLValueTypeMismatchException(
PartiQLValueType.LIST, ExprToPartiQLValueType(exprValue)
Expand All @@ -472,7 +486,7 @@ class ServiceLoaderUtil {
ExprToPartiQLValue(
it, ExprToPartiQLValueType(it)
)
}.asSequence()
}
)
else -> throw ExprToPartiQLValueTypeMismatchException(
PartiQLValueType.SEXP, ExprToPartiQLValueType(exprValue)
Expand All @@ -485,7 +499,7 @@ class ServiceLoaderUtil {
Pair(
it.name?.stringValue() ?: "", ExprToPartiQLValue(it, ExprToPartiQLValueType(it))
)
}.asSequence()
}
)
else -> throw ExprToPartiQLValueTypeMismatchException(
PartiQLValueType.STRUCT, ExprToPartiQLValueType(exprValue)
Expand Down
84 changes: 73 additions & 11 deletions partiql-types/src/main/kotlin/org/partiql/value/PartiQL.kt
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ import org.partiql.value.impl.Int64ValueImpl
import org.partiql.value.impl.Int8ValueImpl
import org.partiql.value.impl.IntValueImpl
import org.partiql.value.impl.IntervalValueImpl
import org.partiql.value.impl.IterableStructValueImpl
import org.partiql.value.impl.ListValueImpl
import org.partiql.value.impl.MapStructValueImpl
import org.partiql.value.impl.MissingValueImpl
import org.partiql.value.impl.MultiMapStructValueImpl
import org.partiql.value.impl.NullValueImpl
import org.partiql.value.impl.SequenceStructValueImpl
import org.partiql.value.impl.SexpValueImpl
import org.partiql.value.impl.StringValueImpl
import org.partiql.value.impl.SymbolValueImpl
Expand Down Expand Up @@ -344,10 +344,25 @@ public fun intervalValue(
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> bagValue(
elements: Sequence<T>?,
elements: Iterable<T>?,
annotations: Annotations = emptyList(),
): BagValue<T> = BagValueImpl(elements, annotations.toPersistentList())

/**
* BAG type value.
*
* @param T
* @param elements
* @param annotations
* @return
*/
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> bagValue(
vararg elements: T,
annotations: Annotations = emptyList(),
): BagValue<T> = BagValueImpl(elements.asIterable(), annotations.toPersistentList())

/**
* LIST type value.
*
Expand All @@ -359,10 +374,25 @@ public fun <T : PartiQLValue> bagValue(
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> listValue(
elements: Sequence<T>?,
elements: Iterable<T>?,
annotations: Annotations = emptyList(),
): ListValue<T> = ListValueImpl(elements, annotations.toPersistentList())

/**
* LIST type value.
*
* @param T
* @param elements
* @param annotations
* @return
*/
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> listValue(
vararg elements: T,
annotations: Annotations = emptyList(),
): ListValue<T> = ListValueImpl(elements.asIterable(), annotations.toPersistentList())

/**
* SEXP type value.
*
Expand All @@ -374,12 +404,42 @@ public fun <T : PartiQLValue> listValue(
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> sexpValue(
elements: Sequence<T>?,
elements: Iterable<T>?,
annotations: Annotations = emptyList(),
): SexpValue<T> = SexpValueImpl(elements, annotations.toPersistentList())

/**
* STRUCT type value.
* SEXP type value.
*
* @param T
* @param elements
* @param annotations
* @return
*/
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> sexpValue(
vararg elements: T,
annotations: Annotations = emptyList(),
): SexpValue<T> = SexpValueImpl(elements.asIterable(), annotations.toPersistentList())

/**
* Create a PartiQL struct value backed by an iterable of key-value field pairs.
*
* @param T
* @param fields
* @param annotations
* @return
*/
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> structValue(
fields: Iterable<Pair<String, T>>?,
annotations: Annotations = emptyList(),
): StructValue<T> = IterableStructValueImpl(fields, annotations.toPersistentList())

/**
* Create a PartiQL struct value backed by an iterable of key-value field pairs.
*
* @param T
* @param fields
Expand All @@ -389,12 +449,13 @@ public fun <T : PartiQLValue> sexpValue(
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> structValue(
fields: Sequence<Pair<String, T>>?,
vararg fields: Pair<String, T>,
annotations: Annotations = emptyList(),
): StructValue<T> = SequenceStructValueImpl(fields, annotations.toPersistentList())
): StructValue<T> = IterableStructValueImpl(fields.toList(), annotations.toPersistentList())

/**
* STRUCT type value.
* Create a PartiQL struct value backed by a multimap of keys with a list of values. This supports having multiple
* values per key, while improving lookup performance compared to using an iterable.
*
* @param T
* @param fields
Expand All @@ -403,13 +464,14 @@ public fun <T : PartiQLValue> structValue(
*/
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> structValueWithDuplicates(
public fun <T : PartiQLValue> structValueMultiMap(
fields: Map<String, Iterable<T>>?,
annotations: Annotations = emptyList(),
): StructValue<T> = MultiMapStructValueImpl(fields, annotations.toPersistentList())

/**
* STRUCT type value.
* Create a PartiQL struct value backed by a map of keys with a list of values. This does not support having multiple
* values per key, but uses a Java HashMap for quicker lookup than an iterable backed StructValue.
*
* @param T
* @param fields
Expand All @@ -418,7 +480,7 @@ public fun <T : PartiQLValue> structValueWithDuplicates(
*/
@JvmOverloads
@PartiQLValueExperimental
public fun <T : PartiQLValue> structValueNoDuplicates(
public fun <T : PartiQLValue> structValueMap(
fields: Map<String, T>?,
annotations: Annotations = emptyList(),
): StructValue<T> = MapStructValueImpl(fields, annotations.toPersistentList())
Expand Down
38 changes: 16 additions & 22 deletions partiql-types/src/main/kotlin/org/partiql/value/PartiQLValue.kt
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,11 @@ public sealed interface ScalarValue<T> : PartiQLValue {
}

@PartiQLValueExperimental
public sealed interface CollectionValue<T : PartiQLValue> : PartiQLValue, Sequence<T> {

public val elements: Sequence<T>?
public sealed interface CollectionValue<T : PartiQLValue> : PartiQLValue, Iterable<T> {

override val isNull: Boolean
get() = elements == null

override fun iterator(): Iterator<T> = elements!!.iterator()
override fun iterator(): Iterator<T>

override fun copy(annotations: Annotations): CollectionValue<T>

Expand Down Expand Up @@ -388,8 +385,8 @@ public abstract class BagValue<T : PartiQLValue> : CollectionValue<T> {
if (this.isNull || other.isNull) return this.isNull == other.isNull

// both not null, compare values
val lhs = this.elements!!.toList()
val rhs = other.elements!!.toList()
val lhs = this.toList()
val rhs = other.toList()
// this is incorrect as it assumes ordered-ness, but we don't have a sort or hash yet
return lhs == rhs
}
Expand Down Expand Up @@ -421,8 +418,8 @@ public abstract class ListValue<T : PartiQLValue> : CollectionValue<T> {
if (this.isNull || other.isNull) return this.isNull == other.isNull

// both not null, compare values
val lhs = this.elements!!.toList()
val rhs = other.elements!!.toList()
val lhs = this.toList()
val rhs = other.toList()
return lhs == rhs
}

Expand Down Expand Up @@ -452,8 +449,8 @@ public abstract class SexpValue<T : PartiQLValue> : CollectionValue<T> {
if (this.isNull || other.isNull) return this.isNull == other.isNull

// both not null, compare values
val lhs = this.elements!!.toList()
val rhs = other.elements!!.toList()
val lhs = this.toList()
val rhs = other.toList()
return lhs == rhs
}

Expand All @@ -464,16 +461,15 @@ public abstract class SexpValue<T : PartiQLValue> : CollectionValue<T> {
}

@PartiQLValueExperimental
public abstract class StructValue<T : PartiQLValue> : PartiQLValue, Sequence<Pair<String, T>> {
public abstract class StructValue<T : PartiQLValue> : PartiQLValue {

override val type: PartiQLValueType = PartiQLValueType.STRUCT

public abstract val fields: Sequence<Pair<String, T>>?
public abstract val fields: Iterable<String>

override val isNull: Boolean
get() = fields == null
public abstract val values: Iterable<T>

override fun iterator(): Iterator<Pair<String, T>> = fields!!.iterator()
public abstract val entries: Iterable<Pair<String, T>>

public abstract operator fun get(key: String): T?

Expand All @@ -486,9 +482,7 @@ public abstract class StructValue<T : PartiQLValue> : PartiQLValue, Sequence<Pai
abstract override fun withoutAnnotations(): StructValue<T>

/**
* See equality of IonElement StructElementImpl
*
* https://github.com/amazon-ion/ion-element-kotlin/blob/master/src/com/amazon/ionelement/impl/StructElementImpl.kt
* Checks equality of struct entries, ignoring ordering.
*
* @param other
* @return
Expand All @@ -502,15 +496,15 @@ public abstract class StructValue<T : PartiQLValue> : PartiQLValue, Sequence<Pai
if (this.isNull || other.isNull) return this.isNull == other.isNull

// both not null, compare fields
val lhs = this.fields!!.groupBy({ it.first }, { it.second })
val rhs = other.fields!!.groupBy({ it.first }, { it.second })
val lhs = this.entries.asIterable().groupBy({ it.first }, { it.second })
val rhs = other.entries.asIterable().groupBy({ it.first }, { it.second })

// check size
if (lhs.size != rhs.size) return false
if (lhs.keys != rhs.keys) return false

// check values
lhs.forEach { (key, values) ->
lhs.entries.forEach { (key, values) ->
val lGroup: Map<PartiQLValue, Int> = values.groupingBy { it }.eachCount()
val rGroup: Map<PartiQLValue, Int> = rhs[key]!!.groupingBy { it }.eachCount()
if (lGroup != rGroup) return false
Expand Down
24 changes: 12 additions & 12 deletions partiql-types/src/main/kotlin/org/partiql/value/helpers/ToIon.kt
Original file line number Diff line number Diff line change
Expand Up @@ -258,31 +258,31 @@ internal object ToIon : PartiQLValueBaseVisitor<IonElement, Unit>() {
override fun visitInterval(v: IntervalValue, ctx: Unit): IonElement = TODO("Not Yet supported")

override fun visitBag(v: BagValue<*>, ctx: Unit): IonElement = v.annotate {
when (val elements = v.elements) {
null -> ionNull(ElementType.LIST)
else -> ionListOf(elements.map { it.accept(ToIon, Unit) }.toList())
when (v.isNull) {
true -> ionNull(ElementType.LIST)
else -> ionListOf(v.map { it.accept(ToIon, Unit) }.toList())
}
}.withAnnotations(BAG_ANNOTATION)

override fun visitList(v: ListValue<*>, ctx: Unit): IonElement = v.annotate {
when (val elements = v.elements) {
null -> ionNull(ElementType.LIST)
else -> ionListOf(elements.map { it.accept(ToIon, Unit) }.toList())
when (v.isNull) {
true -> ionNull(ElementType.LIST)
else -> ionListOf(v.map { it.accept(ToIon, Unit) }.toList())
}
}

override fun visitSexp(v: SexpValue<*>, ctx: Unit): IonElement = v.annotate {
when (val elements = v.elements) {
null -> ionNull(ElementType.SEXP)
else -> ionSexpOf(elements.map { it.accept(ToIon, Unit) }.toList())
when (v.isNull) {
true -> ionNull(ElementType.SEXP)
else -> ionSexpOf(v.map { it.accept(ToIon, Unit) }.toList())
}
}

override fun visitStruct(v: StructValue<*>, ctx: Unit): IonElement = v.annotate {
when (val fields = v.fields) {
null -> ionNull(ElementType.STRUCT)
when (v.isNull) {
true -> ionNull(ElementType.STRUCT)
else -> {
val ionFields = fields.map {
val ionFields = entries.map {
val fk = it.first
val fv = it.second.accept(ToIon, ctx)
field(fk, fv)
Expand Down
Loading

1 comment on commit 79ee005

@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: 79ee005 Previous: 8076e6c Ratio
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithInterruptible 257.1151384318193 us/op 258.1580415189026 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncGroupingWithoutInterruptible 265.85313360108483 us/op 280.94493586889985 us/op 0.95
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithInterruptible 232.519077916979 us/op 238.5863007492334 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinAggFuncWithoutInterruptible 237.30611049904442 us/op 237.630060241217 us/op 1.00
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithInterruptible 174.19800762011752 us/op 180.46430933547705 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.compileCrossJoinWithoutInterruptible 170.97368439029086 us/op 176.57958120273125 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithInterruptible 12838262.678150002 us/op 12914984.1188 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggGroupWithoutInterruptible 12847889.369700002 us/op 13089273.29585 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithInterruptible 5217227.6047 us/op 5089148.02455 us/op 1.03
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinAggWithoutInterruptible 5031493.13965 us/op 5208367.359199999 us/op 0.97
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithInterruptible 39.58802874906563 us/op 38.73938186888891 us/op 1.02
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.evalCrossJoinWithoutInterruptible 38.185921751607125 us/op 38.532416917090316 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithInterruptible 12955521.829600003 us/op 13228923.756749999 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggGroupWithoutInterruptible 12859394.808149999 us/op 13030955.50265 us/op 0.99
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithInterruptible 5029152.9465499995 us/op 4970924.566450001 us/op 1.01
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinAggWithoutInterruptible 5054903.704150001 us/op 5148992.3686 us/op 0.98
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithInterruptible 102911.34357 us/op 100139.07634000001 us/op 1.03
org.partiql.jmh.benchmarks.CompilerInterruptionBenchmark.iterCrossJoinWithoutInterruptible 96054.45573886366 us/op 95421.3775909091 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 86.50768487264324 us/op 79.4077103137532 us/op 1.09
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 155.4196404078454 us/op 153.35857734088162 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 371497.69063333335 us/op 373632.5557333332 us/op 0.99
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 731099.6258999999 us/op 736232.6056249999 us/op 0.99
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 7331120.298350002 us/op 7281505.709350002 us/op 1.01
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 125.71502172555797 us/op 131.6751497135727 us/op 0.95
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 252.16951577445394 us/op 259.72839604463655 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 33.60122357277941 us/op 33.17309873366058 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 40.11666294833122 us/op 41.47422710483924 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 222.29663742216334 us/op 219.32393558326265 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 375.368860924712 us/op 374.70361748058326 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 156.7160371943899 us/op 158.45426481198507 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 46.86814051960313 us/op 48.05389007897932 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 33.98177721366061 us/op 33.424181036247795 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 32.249167391857895 us/op 32.13347648905672 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 58.06603834221629 us/op 57.21179372528858 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 39.85212114321006 us/op 39.875549146288684 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 46.822168172316054 us/op 47.97087056246688 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 49.44804800227645 us/op 49.634578676503075 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 86.88007635539134 us/op 84.26659621031074 us/op 1.03
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 13.26103052697361 us/op 13.53440754733317 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 52.32659571756424 us/op 51.325665590929226 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 150.87955528670494 us/op 153.33103783524672 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 85.12192739170823 us/op 86.54679736908619 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 37.87059990810348 us/op 38.13502114772608 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 42.765277945576756 us/op 42.461449319247905 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 58.786012229608346 us/op 60.5343350147734 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 551.3504696265657 us/op 541.5240310219399 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 12.078762429754335 us/op 12.23687365236053 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 16.95433464276247 us/op 16.950133288017803 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 56.68582251136998 us/op 57.24990226316788 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 162.30021493750365 us/op 161.83985833349863 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 23.11376335355598 us/op 22.650947192449273 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 16.848522294642827 us/op 17.14655461498101 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 22.71072731226191 us/op 23.266030669501834 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 39.98427213421163 us/op 40.27435413116289 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 19.411657418267104 us/op 19.572198566197365 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 191.38417103524878 us/op 199.66730756406835 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 757.6949191629417 us/op 755.4519116753115 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 18.71817622611959 us/op 18.54915290525836 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 190.18673476426753 us/op 192.00196469441033 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 84.65698446336928 us/op 83.83555551772366 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 165.98043403245387 us/op 164.19031997517067 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 45.22734408078978 us/op 46.53957651628681 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 27.654643888465415 us/op 26.68647971377276 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 29.253593044315096 us/op 31.437761767642563 us/op 0.93
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 53.75736899364962 us/op 54.76092268484258 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 25.177629556109142 us/op 25.40304413892336 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 97.3982963859526 us/op 96.91742033296838 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 32.58092911233107 us/op 33.354203065988074 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 70.91358300925133 us/op 73.85108885945853 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 59.97506366306173 us/op 61.13505632265776 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 47.80513073196127 us/op 49.180603521513255 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 128.99712422193755 us/op 127.81741782561873 us/op 1.01
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 44.46168349412426 us/op 46.51874593735998 us/op 0.96
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 97.92499758611646 us/op 97.63559970803684 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 63.27876432492926 us/op 64.76683423607476 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 56.4801130406276 us/op 57.03627652423141 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 104.7421132593583 us/op 106.84335440617527 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 8.657086466988584 us/op 8.789116404376022 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 55.2811941130022 us/op 53.1615719707941 us/op 1.04
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 40.46058770897467 us/op 40.973457140306394 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 81.16390336764336 us/op 76.58416989014323 us/op 1.06
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 15.149693624374436 us/op 15.109764889057042 us/op 1.00
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 14.263829020455878 us/op 14.728512113689693 us/op 0.97
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 13.059679838805414 us/op 13.195703748851074 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 24.308174939966715 us/op 24.908687217864575 us/op 0.98
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 5.915040746389605 us/op 5.989478018826431 us/op 0.99
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 307.1096472971934 us/op 300.7245672512466 us/op 1.02
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 812.5987519342777 us/op 834.7163842551333 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 6.913502459263948 us/op 6.930227581116526 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 1.8273893901641571 us/op 1.7930238443173299 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 7.530116426626617 us/op 7.764765252505354 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameCaseWhenThen 32.48256879225711 us/op 32.0376358027574 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery 38.782602458847734 us/op 40.37714000085628 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery01 219.33687588668855 us/op 219.3737823882234 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameComplexQuery02 367.40566704629055 us/op 375.26444811581115 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExceptUnionIntersectSixty 156.4871086836709 us/op 157.90119460831744 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameExec20Expressions 44.558549729567844 us/op 44.09029388102981 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameFromLet 33.216412386018405 us/op 32.535948941065136 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPattern 30.487505322261256 us/op 31.06841776126142 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGraphPreFilters 55.64514744198217 us/op 55.50580939527433 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameGroupLimit 39.31229854440908 us/op 40.95707629674377 us/op 0.96
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameLongFromSourceOrderBy 47.636949784752986 us/op 46.739390033450846 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameManyJoins 49.771554914020065 us/op 48.52452606625517 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedAggregates 84.23983249321888 us/op 81.48170715962226 us/op 1.03
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameNestedParen 12.965586599576094 us/op 13.116113553469381 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNamePivot 50.851473319451834 us/op 50.356324663279665 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery15OrsAndLikes 153.32496091657995 us/op 156.3793937538775 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuery30Plus 85.24776182099046 us/op 86.04090191409351 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFunc 38.11842931139055 us/op 39.0713626747865 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryFuncInProjection 42.314540953003224 us/op 42.61533289678813 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryList 57.70764504981405 us/op 57.84734637419933 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQueryNestedSelect 551.243456918489 us/op 546.7578958700894 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameQuerySimple 11.75228052198244 us/op 11.909933019897107 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralJoins 16.08045633786098 us/op 16.121754200493566 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralProjections 52.69362363456462 us/op 53.12735560715356 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSeveralSelect 155.01619535274784 us/op 157.72043619709228 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSimpleInsert 22.205186210625097 us/op 21.73160305213563 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeJoins 15.921912713318047 us/op 16.37227650092088 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeProjections 21.700650642842856 us/op 21.65574068455265 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameSomeSelect 39.439014649383616 us/op 40.82849790363362 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameTimeZone 18.18503842475659 us/op 18.67357468913772 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery 192.22756530853803 us/op 193.5701831661887 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseFailNameVeryLongQuery01 736.9083964581525 us/op 746.789358256171 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameCaseWhenThen 24.005657651968626 us/op 23.88469718386143 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery 244.79972434912452 us/op 257.9162091870299 us/op 0.95
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameComplexQuery01 120.954210055813 us/op 124.24771850924621 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExceptUnionIntersectSixty 262.2057023515398 us/op 267.303251565119 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameExec20Expressions 64.23983292943885 us/op 62.844574349404205 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameFromLet 38.920320119587544 us/op 38.611279866027715 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPattern 46.397039700531494 us/op 47.261849982645444 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGraphPreFilters 79.49477112432996 us/op 79.67906357674177 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameGroupLimit 28.923221124761948 us/op 28.437676046791438 us/op 1.02
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameLongFromSourceOrderBy 116.74381657397205 us/op 119.57579672111167 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameManyJoins 42.13056713309393 us/op 41.8648557300941 us/op 1.01
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedAggregates 98.99887372272732 us/op 105.60928090600245 us/op 0.94
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameNestedParen 69.97759753841916 us/op 66.66517835096812 us/op 1.05
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNamePivot 62.288963509571104 us/op 62.676357630464906 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery15OrsAndLikes 190.38941529155358 us/op 196.07976635756762 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuery30Plus 57.658140095133454 us/op 59.386086953343465 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFunc 112.86605365993587 us/op 114.34683955607336 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryFuncInProjection 78.17625269536028 us/op 79.47860120351395 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryList 69.05157143655478 us/op 69.32438647764488 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQueryNestedSelect 135.83191265713182 us/op 139.83265878073666 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameQuerySimple 11.85590022748917 us/op 11.450730788039815 us/op 1.04
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralJoins 81.57730209093421 us/op 83.38090443740384 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralProjections 62.58387378145956 us/op 62.48921587185771 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSeveralSelect 115.97635539215335 us/op 116.94599255119556 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSimpleInsert 21.66220434715546 us/op 21.99587714500722 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeJoins 20.006189637181492 us/op 20.435324129172717 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeProjections 18.280521644326814 us/op 18.851964683670424 us/op 0.97
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameSomeSelect 34.90111208457214 us/op 35.2660635247638 us/op 0.99
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameTimeZone 7.402323417236529 us/op 7.531867352495725 us/op 0.98
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery 461.1436462132398 us/op 459.83121897265573 us/op 1.00
org.partiql.jmh.benchmarks.PartiQLParserBenchmark.parseNameVeryLongQuery01 1135.2150371854486 us/op 1138.6852509835326 us/op 1.00

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

Please sign in to comment.