Skip to content

Commit

Permalink
Replaces CLI to use Pico CLI (#946)
Browse files Browse the repository at this point in the history
* Replaces CLI to use Pico CLI
* Repackages CLI
* Consolidates CLI commands
* Adds ability to handle queries from standard input

Co-authored-by: R. C. Howell <RCHowell@users.noreply.github.com>

* Cleans up logic

Co-authored-by: R. C. Howell <RCHowell@users.noreply.github.com>

* Adjusts options, script name, and capitalization
  • Loading branch information
johnedquinn authored Dec 30, 2022
1 parent 410a77a commit bde2a3f
Show file tree
Hide file tree
Showing 32 changed files with 420 additions and 492 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]

### Added
- Adds ability to pipe queries to the CLI

### Changed
- Updates the CLI to use Pico CLI and modifies several CLI options

### Deprecated

Expand Down
4 changes: 2 additions & 2 deletions buildSrc/src/main/kotlin/partiql.versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ object Versions {
const val jline = "3.21.0"
const val jmh = "0.5.3"
const val joda = "2.12.1"
const val jopt = "5.0"
const val picoCli = "4.7.0"
const val ktlint = "10.2.1"
const val pig = "0.6.1"
//---Testing
Expand Down Expand Up @@ -66,7 +66,7 @@ object Deps {
val jansi = "org.fusesource.jansi:jansi:${Versions.jansi}"
val jline = "org.jline:jline:${Versions.jline}"
val joda = "joda-time:joda-time:${Versions.joda}"
val jopt = "net.sf.jopt-simple:jopt-simple:${Versions.jopt}"
const val picoCli = "info.picocli:picocli:${Versions.picoCli}"
val pig = "org.partiql:partiql-ir-generator:${Versions.pig}"
val pigRuntime = "org.partiql:partiql-ir-generator-runtime:${Versions.pig}"
//---Testing
Expand Down
91 changes: 39 additions & 52 deletions docs/tutorials/Command Line Tutorial.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,52 @@
# PartiQL CLI

```
PartiQL CLI
Command line interface for executing PartiQL queries. Can be run in an interactive (REPL) mode or non-interactive.
Examples:
To run in REPL mode simply execute the executable without any arguments:
partiql
In non-interactive mode we use Ion as the format for input data which is bound to a global variable
named "input_data", in the example below /logs/log.ion is bound to "input_data":
partiql --query="SELECT * FROM input_data" --input=/logs/log.ion
## Build and Run the CLI

The cli can output using PartiQL syntax or Ion using the --output-format option, e.g. to output binary ion:
partiql --query="SELECT * FROM input_data" --output-format=ION_BINARY --input=/logs/log.ion
The following command will build and run the CLI:

To pipe input data in via stdin:
cat /logs/log.ion | partiql --query="SELECT * FROM input_data" --format=ION_BINARY > output.10n
Option Description
------ -----------
-e, --environment <File> initial global environment (optional)
-h, --help prints this help
-i, --input <File> input file, requires the query option (optional)
-if, --input-format <InputFormat> input format, requires the query option (default: ION) [ION, PARTIQL]
-w, --wrap-ion wraps Ion input file values in a bag, requires the input format to be ION, requires the query option
-m, --monochrome removes syntax highlighting for the REPL
-o, --output <File> output file, requires the query option (default: stdout)
-of, --output-format <OutputFormat> output format, requires the query option (default: PARTIQL) [PARTIQL, PARTIQL_PRETTY, ION_TEXT, ION_BINARY]
-p, --permissive run the PartiQL query in PERMISSIVE typing mode
-q, --query <String> PartiQL query, triggers non interactive mode
```

## Building the CLI
```shell
# To build and run
./partiql-app/partiql-cli/shell.sh

The root Gradle build also builds the CLI. To build the CLI separately, execute:
# To build (only)
./gradlew :partiql-app:partiql-cli:install

```shell
./gradlew :cli:build
# To Run (only)
./partiql-app/partiql-cli/build/install/partiql-cli/bin/partiql
```

After building, distributable jars are located in the `cli/build/distributions` directory (relative to the
After building the entire project, distributable jars are located in the `cli/build/distributions` directory (relative to the
project root).

Be sure to include the correct relative path to `gradlew` if you are not in the project root.

## Using the CLI
## CLI Options

The following command will build any dependencies before starting the CLI.
To view all available options, run the CLI with the `--help` option.

## Non-Interactive (Single Query Execution)

To execute a single query, run:

```shell
./gradlew :cli:run -q --args="<command line arguments>"
./partiql-app/partiql-cli/shell.sh query.partiql
```

The CLI can be run in two manners, non-interactive and interactive (REPL).
where `query.partiql` contains the PartiQL query to execute.

Alternatively, you may pipe input into the native command:

```shell
# Via `echo`
echo "SELECT * FROM [0, 1, 2]" | ./partiql-app/partiql-cli/build/install/partiql-cli/bin/partiql

# Via `cat`
echo ~/Desktop/query.partiql | ./partiql-app/partiql-cli/build/install/partiql-cli/bin/partiql
```

## REPL
## Interactive (Shell)

To start an interactive read, eval, print loop (REPL) execute:
To start an interactive shell, execute:

> Note that running directly with Gradle will eat arrow keys and control sequences due to the Gradle daemon.
Expand All @@ -68,7 +57,7 @@ To start an interactive read, eval, print loop (REPL) execute:
You will see a prompt that looks as follows:

```shell
Welcome to the PartiQL REPL!
Welcome to the PartiQL shell!
PartiQL>
```

Expand Down Expand Up @@ -113,7 +102,7 @@ PartiQL> SELECT id + 4 AS name FROM _;

Press control-D to exit the REPL.

### Advanced REPL Features
### Advanced Shell Features

To view the AST of a PartiQL statement, type the statement and press enter only *once*, then type `!!` and press enter:

Expand Down Expand Up @@ -149,7 +138,7 @@ OK!
### Initial Environment
The initial environment for the REPL can be setup with a configuration file, which should be a PartiQL file with a
The initial environment for the Shell can be setup with a configuration file, which should be a PartiQL file with a
single `struct` containing the initial *global environment*.
For example, a file named `config.env` contains the following:
Expand All @@ -170,14 +159,12 @@ For example, a file named `config.env` contains the following:
```
The variables `animals` and `types` can both be bound to the execution environment for later access.
To bind the environment file to the execution environment, start the REPL with the following command:
To bind the environment file to the execution environment, start the Shell with the following command:
```shell
$ ./gradlew :cli:run -q --console=plain --args='-e config.env'
$ ./partiql-app/partiql-cli/shell.sh -e config.env
```
**Note**: Shell expansions such as `~` do not work within the value of the `args` argument.
Or, if you have extracted one of the compressed archives:
```shell
Expand Down Expand Up @@ -209,7 +196,7 @@ PartiQL> SELECT name, type, is_magic FROM animals, types WHERE type = id
>>
```
To see the current REPL environment you can use `!global_env`, for example for the file above:
To see the current Shell environment you can use `!global_env`, for example for the file above:
```shell
PartiQL> !global_env;
Expand Down Expand Up @@ -411,7 +398,7 @@ PartiQL> SELECT * FROM stores AS s
```
## Reading/Writing Files
The REPL provides the `read_file` function to stream data from a file. The files need to be placed in the folder `cli`,
The CLI provides the `read_file` function to stream data from a file. The files need to be placed in the folder `cli`,
and, if using the default file type (Ion), they must contain only a single Ion value (typically a list).
**Note**: Later on, we will introduce reading different file types, but we will first focus on the default (Ion).
Expand Down Expand Up @@ -442,7 +429,7 @@ PartiQL> SELECT city FROM read_file('data.ion') AS c, `["HI", "NY"]` AS s WHERE
>>
```
The REPL also has the capability to write files with the `write_file` function:
The CLI also has the capability to write files with the `write_file` function:
```shell
PartiQL> write_file('out.ion', SELECT * FROM _);
Expand Down Expand Up @@ -718,7 +705,7 @@ For in-depth documentation on valid DDB PartiQL queries, please reference the of
[AWS DynamoDB PartiQL Docs](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html).

## Permissive Typing Mode
By default, the CLI/REPL runs in [LEGACY](https://github.com/partiql/partiql-lang-kotlin/blob/main/lang/src/org/partiql/lang/eval/CompileOptions.kt#L53-L62)
By default, the CLI runs in [LEGACY](https://github.com/partiql/partiql-lang-kotlin/blob/main/lang/src/main/kotlin/org/partiql/lang/eval/CompileOptions.kt#L62)
typing mode, which will give an evaluation time error in the case of data type mismatches.

```shell
Expand Down
94 changes: 10 additions & 84 deletions docs/tutorials/Tutorial.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Getting Started

PartiQL provides an interactive shell, or Read Evaluate Print Loop (REPL),
that allows users to write and evaluate PartiQL queries.
PartiQL provides an interactive shell that allows users to write and evaluate PartiQL queries.

## Prerequisites

Expand All @@ -14,9 +13,9 @@ You can obtain the *latest* version of the Java Runtime from either
[Follow the instructions on how to set](https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/)
`JAVA_HOME` to the path where your Java Runtime is installed.

## Download the PartiQL REPL
## Download the PartiQL CLI

Each release of PartiQL comes with an archive that contains the PartiQL REPL as a
Each release of PartiQL comes with an archive that contains the PartiQL CLI as a
zip file.

1. [Download](https://github.com/partiql/partiql-lang-kotlin/releases).
Expand Down Expand Up @@ -58,20 +57,20 @@ The root folder `partiql-cli` contains a `README.md` file and 3 subfolders
1. Sample query output files with the extension `.output`. These files
contain sample output from running the tutorial queries on the
appropriate data.
1. Alternatively, you can use the online [CLI Tutorial](https://github.com/partiql/partiql-lang-kotlin/wiki/Command-Line-Tutorial).




## Running the PartiQL REPL
## Running the PartiQL CLI

### Windows

Run (double click on) `partiql.bat`. This should open a command-line
prompt and start the PartiQL REPL which displays:
prompt and start the PartiQL Shell which displays:

```shell
Welcome to the PartiQL REPL!
PartiQL>
Welcome to the PartiQL shell!
```

### macOS (Mac) and Unix
Expand All @@ -82,85 +81,12 @@ PartiQL>
The folder name will have the PartiQL version as a suffix, i.e., `partiql-cli-0.1.0`.

```shell
Welcome to the PartiQL REPL!
PartiQL>
Welcome to the PartiQL shell!
```

## Testing the PartiQL REPL

Let's write a simple query to verify that our PartiQL REPL is working. At the `PartiQL>` prompt type:

```shell
PartiQL> SELECT * FROM [1,2,3]
```

and press `ENTER` *twice*. The output should look similar to:

```partiql
<<
{
'_1': 1
},
{
'_1': 2
},
{
'_1': 3
}
>>
```

Congratulations! You successfully installed and run the PartiQL REPL.
The PartiQL REPL is now waiting for more input.

To exit the PartiQL REPL, press:

* `Control+D` in macOS or Unix
* `Control+C` on Windows

or close the terminal/command prompt window.


## Loading data from a file

An easy way to load the necessary data into the REPL
is use the `-e` switch when starting the REPL
and provide the name of a file that contains your data.

```shell
./bin/partiql -e Tutorial/code/q1.env
```

You can then see what is loaded in the REPL's global environment using
the **special** REPL command `!global_env`, i.e.,

```shell
PartiQL> !global_env;
```
```partiql
{
'hr': {
'employees': <<
{
'id': 3,
'name': 'Bob Smith',
'title': NULL
},
{
'id': 4,
'name': 'Susan Smith',
'title': 'Dev Mgr'
},
{
'id': 6,
'name': 'Jane Smith',
'title': 'Software Eng 2'
}
>>
}
}
```
### Command Line Tutorial

To get a deeper understanding of PartiQL, check out the [CLI Tutorial](https://github.com/partiql/partiql-lang-kotlin/wiki/Command-Line-Tutorial).

# Introduction

Expand Down
2 changes: 1 addition & 1 deletion partiql-app/partiql-cli/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ dependencies {
implementation(Deps.jansi)
implementation(Deps.jline)
implementation(Deps.joda)
implementation(Deps.jopt)
implementation(Deps.picoCli)
implementation(Deps.kotlinReflect)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@ cli_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )

cd "$cli_path"
../../gradlew :partiql-app:partiql-cli:install
../partiql-cli/build/install/partiql-cli/bin/partiql
../partiql-cli/build/install/partiql-cli/bin/partiql "$@"
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,25 @@
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/
@file:JvmName("Main")

@file:Suppress("DEPRECATION")

package org.partiql.cli

interface PartiQLCommand {
fun run()
import com.amazon.ion.system.IonSystemBuilder
import org.partiql.cli.pico.PartiQLCommand
import org.partiql.lang.eval.ExprValueFactory
import picocli.CommandLine
import kotlin.system.exitProcess

/**
* Runs the PartiQL CLI.
*/
fun main(args: Array<String>) {
val ion = IonSystemBuilder.standard().build()
val valueFactory = ExprValueFactory.standard(ion)
val command = CommandLine(PartiQLCommand(valueFactory))
val exitCode = command.execute(*args)
exitProcess(exitCode)
}
Loading

1 comment on commit bde2a3f

@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: bde2a3f Previous: 410a77a Ratio
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler15 152.0921375904033 us/op 129.72073731552373 us/op 1.17
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLCompiler30 292.7295114076299 us/op 240.13850481049099 us/op 1.22
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator15 611336.6910750001 us/op 428786.7271000001 us/op 1.43
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30 1199057.0857499999 us/op 912865.572975 us/op 1.31
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLEvaluator30WithData10 11598617.7196 us/op 9001169.4089 us/op 1.29
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser15 263.1973744225939 us/op 225.74572355543518 us/op 1.17
org.partiql.jmh.benchmarks.MultipleLikeBenchmark.testPartiQLParser30 511.4254075927829 us/op 422.4535293213624 us/op 1.21
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameCaseWhenThen 57.137086481983076 us/op 42.165026680440675 us/op 1.36
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery 69.76195181592752 us/op 55.73097436303982 us/op 1.25
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery01 393.59835423390695 us/op 267.0424370011471 us/op 1.47
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameComplexQuery02 658.9059117436952 us/op 461.98220345584576 us/op 1.43
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExceptUnionIntersectSixty 267.29307398628805 us/op 216.11487122652602 us/op 1.24
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameExec20Expressions 80.57394831369336 us/op 64.80795903876006 us/op 1.24
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameFromLet 57.35081020538412 us/op 41.813369842797606 us/op 1.37
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPattern 54.436115980309935 us/op 40.402574364384705 us/op 1.35
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGraphPreFilters 88.84169911210174 us/op 65.68731539156101 us/op 1.35
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameGroupLimit 61.12813310348179 us/op 44.137591889498694 us/op 1.38
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameLongFromSourceOrderBy 88.57483174771981 us/op 60.424168321714674 us/op 1.47
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameManyJoins 79.46219880558071 us/op 58.945292423904576 us/op 1.35
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedAggregates 129.97058985621808 us/op 99.66184376175605 us/op 1.30
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameNestedParen 26.539124214567646 us/op 18.296349396920903 us/op 1.45
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNamePivot 86.39951933512731 us/op 67.50148106874195 us/op 1.28
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery15OrsAndLikes 304.64220282269474 us/op 213.73538799351417 us/op 1.43
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuery30Plus 152.16157845452523 us/op 111.04279814760487 us/op 1.37
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFunc 58.19802853022587 us/op 46.514957328838136 us/op 1.25
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryFuncInProjection 130.08258869431347 us/op 89.75085529962635 us/op 1.45
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryList 103.38848821735374 us/op 77.21816519876313 us/op 1.34
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQueryNestedSelect 861.1844108525086 us/op 618.8838004486414 us/op 1.39
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameQuerySimple 24.260747524327527 us/op 16.170413670076037 us/op 1.50
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralJoins 31.42552347005985 us/op 22.684752479448413 us/op 1.39
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralProjections 94.79718047583921 us/op 71.84529227621891 us/op 1.32
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSeveralSelect 247.13568950740705 us/op 188.35047622519585 us/op 1.31
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSimpleInsert 42.608234134540794 us/op 30.09108795692999 us/op 1.42
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeJoins 32.366677011775586 us/op 22.394581839136357 us/op 1.45
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeProjections 43.47977781044878 us/op 31.705301587242758 us/op 1.37
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameSomeSelect 69.74949119787931 us/op 50.66244906840093 us/op 1.38
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameTimeZone 36.51006008772261 us/op 25.73941630727465 us/op 1.42
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery 418.18848243523945 us/op 315.47553832019605 us/op 1.33
org.partiql.jmh.benchmarks.ParserBenchmark.parseFailNameVeryLongQuery01 1443.3729275380124 us/op 1029.4529095691837 us/op 1.40
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameCaseWhenThen 38.192405398123775 us/op 31.376903922815625 us/op 1.22
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery 350.23086306855976 us/op 272.90242004788564 us/op 1.28
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameComplexQuery01 154.92765472313607 us/op 126.32430434759613 us/op 1.23
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExceptUnionIntersectSixty 304.46679497805593 us/op 259.3568661093417 us/op 1.17
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameExec20Expressions 88.93805185529246 us/op 75.77707322864173 us/op 1.17
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameFromLet 53.36605268952938 us/op 42.70069738588305 us/op 1.25
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPattern 56.961080074861954 us/op 46.752013771869215 us/op 1.22
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGraphPreFilters 97.00582090910405 us/op 77.87705192899915 us/op 1.25
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameGroupLimit 56.45375806902827 us/op 43.41286804059667 us/op 1.30
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameLongFromSourceOrderBy 189.48266600407288 us/op 153.79879261204997 us/op 1.23
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameManyJoins 62.3166925130859 us/op 50.69795768520622 us/op 1.23
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedAggregates 134.9765894925608 us/op 107.41892177005998 us/op 1.26
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameNestedParen 112.36372986154281 us/op 92.35787329057658 us/op 1.22
org.partiql.jmh.benchmarks.ParserBenchmark.parseNamePivot 93.39506157804831 us/op 80.64196202557608 us/op 1.16
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery15OrsAndLikes 251.35513707632194 us/op 204.26288034044586 us/op 1.23
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuery30Plus 89.5222363666343 us/op 70.09204422042049 us/op 1.28
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFunc 212.4103933910645 us/op 154.90205691449563 us/op 1.37
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryFuncInProjection 138.86145907656953 us/op 116.75605457595195 us/op 1.19
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryList 121.47019342786832 us/op 104.72735832694784 us/op 1.16
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQueryNestedSelect 188.83473370938125 us/op 155.86388913650813 us/op 1.21
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameQuerySimple 18.139595341766782 us/op 15.055570320432386 us/op 1.20
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralJoins 102.05081595290397 us/op 93.22295340924683 us/op 1.09
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralProjections 77.72358314096138 us/op 65.11294623795669 us/op 1.19
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSeveralSelect 154.8894148143356 us/op 129.69711668112487 us/op 1.19
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSimpleInsert 32.44893685808706 us/op 25.869842824070012 us/op 1.25
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeJoins 30.362801356048323 us/op 24.493552695695268 us/op 1.24
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeProjections 26.76292370256572 us/op 20.64653822349039 us/op 1.30
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameSomeSelect 49.75531855366475 us/op 41.864884015178184 us/op 1.19
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameTimeZone 13.29720555947984 us/op 9.881212855583188 us/op 1.35
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery 577.377066478984 us/op 483.2639289132194 us/op 1.19
org.partiql.jmh.benchmarks.ParserBenchmark.parseNameVeryLongQuery01 1693.014367692147 us/op 1387.5058583811733 us/op 1.22
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLCompiler 12.891951564951526 us/op 10.11500443563449 us/op 1.27
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLEvaluator 2.923933510539569 us/op 2.7344535275976223 us/op 1.07
org.partiql.jmh.benchmarks.PartiQLBenchmark.testPartiQLParser 17.914528203041108 us/op 13.589063964539173 us/op 1.32

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

Please sign in to comment.