-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updates partiql-eval APIs to Java and split compile phase
- Loading branch information
Showing
27 changed files
with
490 additions
and
388 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,36 @@ | ||
public abstract interface class org/partiql/eval/PartiQLEngine { | ||
public static final field Companion Lorg/partiql/eval/PartiQLEngine$Companion; | ||
public static fun builder ()Lorg/partiql/eval/builder/PartiQLEngineBuilder; | ||
public abstract fun prepare (Lorg/partiql/plan/Plan;Lorg/partiql/eval/PartiQLEngine$Mode;Lorg/partiql/spi/catalog/Session;)Lorg/partiql/eval/PartiQLStatement; | ||
public static fun standard ()Lorg/partiql/eval/PartiQLEngine; | ||
public class org/partiql/eval/Mode { | ||
public static final field PERMISSIVE I | ||
public static final field STRICT I | ||
public static fun PERMISSIVE ()Lorg/partiql/eval/Mode; | ||
public static fun STRICT ()Lorg/partiql/eval/Mode; | ||
public fun code ()I | ||
} | ||
|
||
public final class org/partiql/eval/PartiQLEngine$Companion { | ||
public final fun builder ()Lorg/partiql/eval/builder/PartiQLEngineBuilder; | ||
public final fun standard ()Lorg/partiql/eval/PartiQLEngine; | ||
public abstract interface class org/partiql/eval/PartiQLCompiler { | ||
public static fun builder ()Lorg/partiql/eval/PartiQLCompiler$Builder; | ||
public abstract fun prepare (Lorg/partiql/plan/Plan;)Lorg/partiql/eval/Statement; | ||
public static fun standard ()Lorg/partiql/eval/PartiQLCompiler; | ||
public static fun standard (Lorg/partiql/eval/Mode;)Lorg/partiql/eval/PartiQLCompiler; | ||
} | ||
|
||
public final class org/partiql/eval/PartiQLEngine$Mode : java/lang/Enum { | ||
public static final field PERMISSIVE Lorg/partiql/eval/PartiQLEngine$Mode; | ||
public static final field STRICT Lorg/partiql/eval/PartiQLEngine$Mode; | ||
public static fun getEntries ()Lkotlin/enums/EnumEntries; | ||
public static fun valueOf (Ljava/lang/String;)Lorg/partiql/eval/PartiQLEngine$Mode; | ||
public static fun values ()[Lorg/partiql/eval/PartiQLEngine$Mode; | ||
public class org/partiql/eval/PartiQLCompiler$Builder { | ||
public fun build ()Lorg/partiql/eval/PartiQLCompiler; | ||
public fun mode (Lorg/partiql/eval/Mode;)Lorg/partiql/eval/PartiQLCompiler$Builder; | ||
} | ||
|
||
public abstract interface class org/partiql/eval/PartiQLResult { | ||
public abstract interface class org/partiql/eval/PartiQLEvaluator { | ||
public static fun builder ()Lorg/partiql/eval/PartiQLEvaluator$Builder; | ||
public abstract fun eval (Lorg/partiql/plan/Plan;)Lorg/partiql/spi/value/Datum; | ||
public static fun standard ()Lorg/partiql/eval/PartiQLEvaluator; | ||
public static fun standard (Lorg/partiql/eval/Mode;)Lorg/partiql/eval/PartiQLEvaluator; | ||
} | ||
|
||
public final class org/partiql/eval/PartiQLResult$Error : org/partiql/eval/PartiQLResult { | ||
public fun <init> (Ljava/lang/Throwable;)V | ||
public final fun component1 ()Ljava/lang/Throwable; | ||
public final fun copy (Ljava/lang/Throwable;)Lorg/partiql/eval/PartiQLResult$Error; | ||
public static synthetic fun copy$default (Lorg/partiql/eval/PartiQLResult$Error;Ljava/lang/Throwable;ILjava/lang/Object;)Lorg/partiql/eval/PartiQLResult$Error; | ||
public fun equals (Ljava/lang/Object;)Z | ||
public final fun getCause ()Ljava/lang/Throwable; | ||
public fun hashCode ()I | ||
public fun toString ()Ljava/lang/String; | ||
public class org/partiql/eval/PartiQLEvaluator$Builder { | ||
public fun build ()Lorg/partiql/eval/PartiQLEvaluator; | ||
public fun compiler (Lorg/partiql/eval/PartiQLCompiler;)Lorg/partiql/eval/PartiQLEvaluator$Builder; | ||
} | ||
|
||
public final class org/partiql/eval/PartiQLResult$Value : org/partiql/eval/PartiQLResult { | ||
public fun <init> (Lorg/partiql/spi/value/Datum;)V | ||
public final fun component1 ()Lorg/partiql/spi/value/Datum; | ||
public final fun copy (Lorg/partiql/spi/value/Datum;)Lorg/partiql/eval/PartiQLResult$Value; | ||
public static synthetic fun copy$default (Lorg/partiql/eval/PartiQLResult$Value;Lorg/partiql/spi/value/Datum;ILjava/lang/Object;)Lorg/partiql/eval/PartiQLResult$Value; | ||
public fun equals (Ljava/lang/Object;)Z | ||
public final fun getValue ()Lorg/partiql/spi/value/Datum; | ||
public fun hashCode ()I | ||
public fun toString ()Ljava/lang/String; | ||
} | ||
|
||
public abstract interface class org/partiql/eval/PartiQLStatement { | ||
public abstract fun execute (Lorg/partiql/spi/catalog/Session;)Lorg/partiql/eval/PartiQLResult; | ||
} | ||
|
||
public final class org/partiql/eval/builder/PartiQLEngineBuilder { | ||
public fun <init> ()V | ||
public final fun build ()Lorg/partiql/eval/PartiQLEngine; | ||
public abstract interface class org/partiql/eval/Statement { | ||
public abstract fun execute ()Lorg/partiql/spi/value/Datum; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package org.partiql.eval; | ||
|
||
/** | ||
* PartiQL Execution Mode. | ||
*/ | ||
public class Mode { | ||
|
||
/** | ||
* Strict execution mode. | ||
*/ | ||
public static final int STRICT = 0; | ||
|
||
/** | ||
* Permissive execution mode. | ||
*/ | ||
public static final int PERMISSIVE = 1; | ||
|
||
/** | ||
* Internal enum code. | ||
*/ | ||
private final int code; | ||
|
||
private Mode(int code) { | ||
this.code = code; | ||
} | ||
|
||
public int code() { | ||
return this.code; | ||
} | ||
|
||
public static Mode STRICT() { | ||
return new Mode(STRICT); | ||
} | ||
|
||
public static Mode PERMISSIVE() { | ||
return new Mode(PERMISSIVE); | ||
} | ||
} |
73 changes: 73 additions & 0 deletions
73
partiql-eval/src/main/java/org/partiql/eval/PartiQLCompiler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package org.partiql.eval; | ||
|
||
import org.jetbrains.annotations.NotNull; | ||
import org.partiql.plan.Plan; | ||
|
||
/** | ||
* A [PartiQLCompiler] is responsible for produces physical plans from logical plans. | ||
*/ | ||
public interface PartiQLCompiler { | ||
|
||
/** | ||
* Compiles the given plan into an executable PartiQL statement. | ||
* | ||
* @param plan The plan to compile. | ||
* @return The prepared statement. | ||
*/ | ||
@NotNull | ||
public Statement prepare(@NotNull Plan plan); | ||
|
||
/** | ||
* @return A new [PartiQLCompilerBuilder]. | ||
*/ | ||
@NotNull | ||
public static Builder builder() { | ||
return new Builder(); | ||
} | ||
|
||
/** | ||
* @return A new [PartiQLCompiler] with the default (strict) compilation mode. | ||
*/ | ||
@NotNull | ||
public static PartiQLCompiler standard() { | ||
return standard(Mode.STRICT()); | ||
} | ||
|
||
/** | ||
* @param mode The compilation mode. | ||
* @return A new [PartiQLCompiler] with the given compilation mode. | ||
*/ | ||
@NotNull | ||
public static PartiQLCompiler standard(Mode mode) { | ||
return new StandardCompiler(mode); | ||
} | ||
|
||
/** | ||
* Builder class for the [PartiQLCompiler] interface. | ||
*/ | ||
public static class Builder { | ||
|
||
// builder state | ||
private Mode mode; | ||
|
||
private Builder() { | ||
// empty | ||
} | ||
|
||
/** | ||
* @param mode The mode. | ||
* @return This builder. | ||
*/ | ||
public Builder mode(Mode mode) { | ||
this.mode = mode; | ||
return this; | ||
} | ||
|
||
/** | ||
* @return A new [PartiQLCompiler]. | ||
*/ | ||
public PartiQLCompiler build() { | ||
return new StandardCompiler(mode); | ||
} | ||
} | ||
} |
68 changes: 68 additions & 0 deletions
68
partiql-eval/src/main/java/org/partiql/eval/PartiQLEvaluator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package org.partiql.eval; | ||
|
||
import org.jetbrains.annotations.NotNull; | ||
import org.partiql.plan.Plan; | ||
import org.partiql.spi.value.Datum; | ||
|
||
/** | ||
* TODO JAVADOC | ||
*/ | ||
public interface PartiQLEvaluator { | ||
|
||
/** | ||
* @param plan The plan to evaluate. | ||
* @return The result of evaluating the plan. | ||
*/ | ||
@NotNull | ||
public Datum eval(@NotNull Plan plan); | ||
|
||
/** | ||
* @return A new [PartiQLCompilerBuilder]. | ||
*/ | ||
@NotNull | ||
public static Builder builder() { | ||
return new Builder(); | ||
} | ||
|
||
/** | ||
* @return A new [PartiQLEvaluator] with the default (strict) evaluation mode. | ||
*/ | ||
@NotNull | ||
public static PartiQLEvaluator standard() { | ||
return standard(Mode.STRICT()); | ||
} | ||
|
||
/** | ||
* @param mode The evaluation mode. | ||
* @return A new [PartiQLEvaluator] with the given evaluation mode. | ||
*/ | ||
@NotNull | ||
public static PartiQLEvaluator standard(Mode mode) { | ||
return new StandardEvaluator(PartiQLCompiler.standard(mode)); | ||
} | ||
|
||
/** | ||
* Builder class for the [PartiQLCompiler] interface. | ||
*/ | ||
public static class Builder { | ||
|
||
// builder state | ||
private PartiQLCompiler compiler = PartiQLCompiler.standard(); | ||
|
||
private Builder() { | ||
// empty | ||
} | ||
|
||
public Builder compiler(PartiQLCompiler compiler) { | ||
this.compiler = compiler; | ||
return this; | ||
} | ||
|
||
/** | ||
* @return A new [PartiQLCompiler]. | ||
*/ | ||
public PartiQLEvaluator build() { | ||
return new StandardEvaluator(compiler); | ||
} | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
partiql-eval/src/main/java/org/partiql/eval/Statement.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package org.partiql.eval; | ||
|
||
import org.jetbrains.annotations.NotNull; | ||
import org.partiql.spi.value.Datum; | ||
|
||
/** | ||
* An executable statement. | ||
* <br> | ||
* Developer Note: Consider `Datum execute(Parameters parameters)` for DML. | ||
*/ | ||
public interface Statement { | ||
|
||
/** | ||
* Executes the statement with no parameters. | ||
* | ||
* @return Datum execution result. | ||
*/ | ||
@NotNull | ||
public Datum execute(); | ||
} |
Oops, something went wrong.