Skip to content

partiql/partiql-lang-kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b3133a4 · Jul 25, 2024
Jun 11, 2024
May 17, 2024
Apr 18, 2024
Dec 12, 2023
May 14, 2024
May 14, 2024
Apr 5, 2024
Jul 15, 2024
Jun 17, 2024
Jul 10, 2024
Jul 18, 2024
Jul 15, 2024
Jul 15, 2024
Jul 12, 2024
Jul 25, 2024
Jul 17, 2024
Jul 12, 2024
Jun 3, 2024
Jul 25, 2024
Apr 18, 2024
Jul 29, 2019
Dec 21, 2021
May 26, 2023
Jun 3, 2024
Jul 29, 2019
Jun 12, 2023
Jun 12, 2023
May 13, 2019
Nov 30, 2022
Apr 10, 2024
Jan 14, 2020
Mar 4, 2024
May 14, 2024
May 14, 2024
May 17, 2024

Repository files navigation

Maven Central License CI Build codecov

PartiQL Lang Kotlin

This is a Kotlin implementation of the PartiQL specification. PartiQL is based on SQL-99 and has added support for working with schemaless hierarchical data. PartiQL’s extensions to SQL are easy to understand, treat nested data as first class citizens and compose seamlessly with each other and SQL.

This repository contains an embeddable reference interpreter, test framework, and tests for PartiQL in Kotlin.

About

Check out the PartiQL Lang Kotlin Wiki for documentation, tutorials, upgrade guides, and more!

Status

Users of PartiQL should consider PartiQL to be in "preview" status. It has been leveraged within a number of Amazon internal systems and AWS products for over a year. The behavior of the language itself is mostly stable, however, the public API of the interpreter is slated to undergo significant improvements in the near term. (See the GitHub issues list for details.)

Using In Your Project

This project is published to Maven Central.

Group ID Artifact ID Recommended Version
org.partiql partiql-lang-kotlin 0.14.5

For Maven builds, add the following to your pom.xml:

<dependency>
  <groupId>org.partiql</groupId>
  <artifactId>partiql-lang-kotlin</artifactId>
  <version>${version}</version>
</dependency>

For Gradle 5+, add the following to your build.gradle:

repositories {
    mavenCentral()
}

dependencies {
    implementation "org.partiql:partiql-lang-kotlin:${version}"
}

Be sure to replace ${version} with the desired version.

Building

Pre-requisite: Building this project requires Java 11+.

This project uses a git submodule to pull in partiql-tests. The easiest way to pull everything in is to clone the repository recursively:

$ git clone --recursive https://github.com/partiql/partiql-lang-kotlin.git

You can also initialize the submodules as follows:

$ git submodule update --init --recursive

To build this project, from the root directory execute:

./gradlew build

This will build the reference interpreter and test framework, then run all unit and integration tests.

Directory Structure

$ tree -d -L 2 -I build -I src`
.
├── buildSrc                    Gradle multi-project build
├── docs                        Documentation
│   ├── upgrades
│   └── wiki
├── examples                    Code examples
├── lib
│   ├── isl                     Ion Schema DOM
│   └── sprout                  IR codegen
├── partiql-ast                 PartiQL ast data structures and utilities
├── partiql-cli                 CLI & Shell application
├── partiql-coverage            Code coverage library
├── partiql-lang                Top-level project containing all subprojects
├── partiql-parser              PartiQL parser
├── partiql-plan                PartiQL plan data structures and utilities
├── partiql-planner             PartiQL planner
├── partiql-spi                 Service provider interface
├── partiql-types               PartiQL types
├── plugins                     PartiQL plugins used in testing 
│   ├── partiql-local
│   └── partiql-memory
└── test
    ├── partiql-tests           Conformance test data
    └── partiql-tests-runner    Conformance test runner

Running JMH Benchmarks

To run JMH benchmarks located in lang/jmh, build the entire project first and then run the following command:

./gradlew jmh

Examples

See the examples project in this repository for examples covering use of the PartiQL interpreter in your project.

Contributing

See CONTRIBUTING

License

The works contained within this repository are licensed under the Apache 2.0 License.

See the LICENSE file.