diff --git a/src/main/java/io/github/willena/influxql/ast/Query.java b/src/main/java/io/github/willena/influxql/ast/Query.java index 0ef9afd..60a0c9a 100644 --- a/src/main/java/io/github/willena/influxql/ast/Query.java +++ b/src/main/java/io/github/willena/influxql/ast/Query.java @@ -21,6 +21,7 @@ import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.LinkedList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** Top level {@link Node} is a {@link Query} Each query can contain multiple statements */ @@ -40,6 +41,19 @@ public List getStatements() { return statements; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Query query = (Query) o; + return Objects.equals(statements, query.statements); + } + + @Override + public int hashCode() { + return Objects.hashCode(statements); + } + /** * Build a query based on provided statements (at least one) * diff --git a/src/main/java/io/github/willena/influxql/ast/expr/BinaryExpression.java b/src/main/java/io/github/willena/influxql/ast/expr/BinaryExpression.java index 27a4a03..fc642eb 100644 --- a/src/main/java/io/github/willena/influxql/ast/expr/BinaryExpression.java +++ b/src/main/java/io/github/willena/influxql/ast/expr/BinaryExpression.java @@ -21,6 +21,7 @@ import io.github.willena.influxql.ast.Expression; import io.github.willena.influxql.ast.token.Operator; +import java.util.Objects; /** Binary expression */ public class BinaryExpression implements Expression { @@ -28,6 +29,21 @@ public class BinaryExpression implements Expression { private final Expression right; private final Operator op; + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BinaryExpression that = (BinaryExpression) o; + return Objects.equals(left, that.left) + && Objects.equals(right, that.right) + && op == that.op; + } + + @Override + public int hashCode() { + return Objects.hash(left, right, op); + } + /** * Create a new Binary expression with LHS and RHS and operator * diff --git a/src/main/java/io/github/willena/influxql/ast/expr/BoundParameter.java b/src/main/java/io/github/willena/influxql/ast/expr/BoundParameter.java index 637bc72..c3aec99 100644 --- a/src/main/java/io/github/willena/influxql/ast/expr/BoundParameter.java +++ b/src/main/java/io/github/willena/influxql/ast/expr/BoundParameter.java @@ -20,11 +20,25 @@ import static io.github.willena.influxql.ast.utils.Utils.quoteIdentifier; import io.github.willena.influxql.ast.Expression; +import java.util.Objects; /** Bound parameter expression */ public class BoundParameter implements Expression { private final String name; + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + BoundParameter that = (BoundParameter) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hashCode(name); + } + /** * Create named bound parameter * diff --git a/src/main/java/io/github/willena/influxql/ast/expr/Call.java b/src/main/java/io/github/willena/influxql/ast/expr/Call.java index e24dbff..f5b15ca 100644 --- a/src/main/java/io/github/willena/influxql/ast/expr/Call.java +++ b/src/main/java/io/github/willena/influxql/ast/expr/Call.java @@ -22,6 +22,7 @@ import io.github.willena.influxql.ast.Expression; import io.github.willena.influxql.ast.utils.StringJoiningList; import java.util.List; +import java.util.Objects; /** Function / Call expression */ public class Call implements Expression { @@ -34,6 +35,19 @@ private Call(Builder builder) { ensureDefined("name", name); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Call call = (Call) o; + return Objects.equals(name, call.name) && Objects.equals(args, call.args); + } + + @Override + public int hashCode() { + return Objects.hash(name, args); + } + /** * Gets name. * diff --git a/src/main/java/io/github/willena/influxql/ast/expr/Dimension.java b/src/main/java/io/github/willena/influxql/ast/expr/Dimension.java index 58fd74b..2195c1d 100644 --- a/src/main/java/io/github/willena/influxql/ast/expr/Dimension.java +++ b/src/main/java/io/github/willena/influxql/ast/expr/Dimension.java @@ -23,6 +23,7 @@ import io.github.willena.influxql.ast.Node; import io.github.willena.influxql.ast.expr.literal.DurationLiteral; import java.time.Duration; +import java.util.Objects; /** A grouping dimensions */ public class Dimension implements Node { @@ -38,6 +39,19 @@ public Dimension(final Expression expression) { ensureDefined("expression", expression); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Dimension dimension = (Dimension) o; + return Objects.equals(expression, dimension.expression); + } + + @Override + public int hashCode() { + return Objects.hashCode(expression); + } + /** * Group by expression * diff --git a/src/main/java/io/github/willena/influxql/ast/expr/Distinct.java b/src/main/java/io/github/willena/influxql/ast/expr/Distinct.java index cdddda0..1e53d46 100644 --- a/src/main/java/io/github/willena/influxql/ast/expr/Distinct.java +++ b/src/main/java/io/github/willena/influxql/ast/expr/Distinct.java @@ -20,6 +20,7 @@ import static io.github.willena.influxql.ast.utils.Utils.ensureDefined; import io.github.willena.influxql.ast.Expression; +import java.util.Objects; /** Distinct expression */ public class Distinct implements Expression { @@ -35,6 +36,19 @@ public Distinct(String value) { ensureDefined("value", value); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Distinct distinct = (Distinct) o; + return Objects.equals(value, distinct.value); + } + + @Override + public int hashCode() { + return Objects.hashCode(value); + } + /** * Build using name * diff --git a/src/main/java/io/github/willena/influxql/ast/expr/Parentheses.java b/src/main/java/io/github/willena/influxql/ast/expr/Parentheses.java index 579d7f2..74eea98 100644 --- a/src/main/java/io/github/willena/influxql/ast/expr/Parentheses.java +++ b/src/main/java/io/github/willena/influxql/ast/expr/Parentheses.java @@ -20,6 +20,7 @@ import static io.github.willena.influxql.ast.utils.Utils.ensureDefined; import io.github.willena.influxql.ast.Expression; +import java.util.Objects; /** Parenthesis expression */ public class Parentheses implements Expression { @@ -35,6 +36,19 @@ public Parentheses(Expression expression) { ensureDefined("expression", expression); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Parentheses that = (Parentheses) o; + return Objects.equals(expression, that.expression); + } + + @Override + public int hashCode() { + return Objects.hashCode(expression); + } + /** * Build a new {@link Parentheses} expression * diff --git a/src/main/java/io/github/willena/influxql/ast/expr/UnaryExpression.java b/src/main/java/io/github/willena/influxql/ast/expr/UnaryExpression.java index ff135a8..0387ffe 100644 --- a/src/main/java/io/github/willena/influxql/ast/expr/UnaryExpression.java +++ b/src/main/java/io/github/willena/influxql/ast/expr/UnaryExpression.java @@ -21,6 +21,7 @@ import io.github.willena.influxql.ast.Expression; import io.github.willena.influxql.ast.token.Operator; +import java.util.Objects; import java.util.Set; public class UnaryExpression implements Expression { @@ -43,6 +44,19 @@ private UnaryExpression(Builder builder) { } } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + UnaryExpression that = (UnaryExpression) o; + return Objects.equals(expression, that.expression) && operator == that.operator; + } + + @Override + public int hashCode() { + return Objects.hash(expression, operator); + } + @Override public String toString() { return operator.toString() + expression.toString(); diff --git a/src/main/java/io/github/willena/influxql/ast/expr/VarRef.java b/src/main/java/io/github/willena/influxql/ast/expr/VarRef.java index de746af..8f467da 100644 --- a/src/main/java/io/github/willena/influxql/ast/expr/VarRef.java +++ b/src/main/java/io/github/willena/influxql/ast/expr/VarRef.java @@ -21,6 +21,7 @@ import static io.github.willena.influxql.ast.utils.Utils.quoteIdentifier; import io.github.willena.influxql.ast.Expression; +import java.util.Objects; /** Reference to variable of name of field / alias */ public class VarRef implements Expression { @@ -39,6 +40,19 @@ public VarRef(String value, DataType type) { ensureDefined("value", value); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + VarRef varRef = (VarRef) o; + return Objects.equals(value, varRef.value) && type == varRef.type; + } + + @Override + public int hashCode() { + return Objects.hash(value, type); + } + /** * Build a varRef from name * diff --git a/src/main/java/io/github/willena/influxql/ast/extra/RetentionPolicy.java b/src/main/java/io/github/willena/influxql/ast/extra/RetentionPolicy.java index 8e1d2f3..6adbf9b 100644 --- a/src/main/java/io/github/willena/influxql/ast/extra/RetentionPolicy.java +++ b/src/main/java/io/github/willena/influxql/ast/extra/RetentionPolicy.java @@ -19,6 +19,7 @@ import io.github.willena.influxql.ast.Buildable; import java.time.Duration; +import java.util.Objects; /** * Helper class to build retention policy object; This one is not in the original AST but allow @@ -44,6 +45,27 @@ public boolean isEmpty() { && retentionPolicyShardGroupDuration == null; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RetentionPolicy that = (RetentionPolicy) o; + return Objects.equals(retentionPolicyDuration, that.retentionPolicyDuration) + && Objects.equals(retentionPolicyReplication, that.retentionPolicyReplication) + && Objects.equals(retentionPolicyName, that.retentionPolicyName) + && Objects.equals( + retentionPolicyShardGroupDuration, that.retentionPolicyShardGroupDuration); + } + + @Override + public int hashCode() { + return Objects.hash( + retentionPolicyDuration, + retentionPolicyReplication, + retentionPolicyName, + retentionPolicyShardGroupDuration); + } + /** * Get the RP duration * diff --git a/src/main/java/io/github/willena/influxql/ast/field/Field.java b/src/main/java/io/github/willena/influxql/ast/field/Field.java index 24aee7c..47e36b5 100644 --- a/src/main/java/io/github/willena/influxql/ast/field/Field.java +++ b/src/main/java/io/github/willena/influxql/ast/field/Field.java @@ -26,6 +26,7 @@ import io.github.willena.influxql.ast.expr.DataType; import io.github.willena.influxql.ast.expr.VarRef; import io.github.willena.influxql.ast.expr.Wildcard; +import java.util.Objects; /** Basic selection Field */ public class Field implements Node { @@ -38,6 +39,19 @@ private Field(Builder builder) { ensureDefined("expression", expression); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Field field = (Field) o; + return Objects.equals(expression, field.expression) && Objects.equals(alias, field.alias); + } + + @Override + public int hashCode() { + return Objects.hash(expression, alias); + } + @Override public String toString() { String str = expression.toString(); diff --git a/src/main/java/io/github/willena/influxql/ast/field/SortField.java b/src/main/java/io/github/willena/influxql/ast/field/SortField.java index 2863f3d..016ad88 100644 --- a/src/main/java/io/github/willena/influxql/ast/field/SortField.java +++ b/src/main/java/io/github/willena/influxql/ast/field/SortField.java @@ -22,6 +22,7 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Node; +import java.util.Objects; /** A Field used to sort the data. */ public class SortField implements Node { @@ -34,6 +35,19 @@ private SortField(Builder builder) { ensureDefined("name", name); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SortField sortField = (SortField) o; + return ascending == sortField.ascending && Objects.equals(name, sortField.name); + } + + @Override + public int hashCode() { + return Objects.hash(name, ascending); + } + /** * Create an ASC based sort field * diff --git a/src/main/java/io/github/willena/influxql/ast/source/Measurement.java b/src/main/java/io/github/willena/influxql/ast/source/Measurement.java index 74d109d..602675e 100644 --- a/src/main/java/io/github/willena/influxql/ast/source/Measurement.java +++ b/src/main/java/io/github/willena/influxql/ast/source/Measurement.java @@ -21,6 +21,7 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Source; +import java.util.Objects; import java.util.regex.Pattern; /** An influxQL measurement in FROM clauses */ @@ -131,6 +132,23 @@ public String toString() { return buf.toString(); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Measurement that = (Measurement) o; + return Objects.equals(database, that.database) + && Objects.equals(retentionPolicy, that.retentionPolicy) + && Objects.equals(name, that.name) + && Objects.equals(regex, that.regex) + && Objects.equals(systemIterator, that.systemIterator); + } + + @Override + public int hashCode() { + return Objects.hash(database, retentionPolicy, name, regex, systemIterator); + } + /** {@code Measurement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/source/SubQuery.java b/src/main/java/io/github/willena/influxql/ast/source/SubQuery.java index 84d2be8..5742cd4 100644 --- a/src/main/java/io/github/willena/influxql/ast/source/SubQuery.java +++ b/src/main/java/io/github/willena/influxql/ast/source/SubQuery.java @@ -21,6 +21,7 @@ import io.github.willena.influxql.ast.Source; import io.github.willena.influxql.ast.statement.SelectStatement; +import java.util.Objects; import java.util.function.Function; /** Define a subquery containing a single {@link SelectStatement} */ @@ -37,6 +38,19 @@ public SubQuery(SelectStatement statement) { ensureDefined("statement", statement); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SubQuery subQuery = (SubQuery) o; + return Objects.equals(statement, subQuery.statement); + } + + @Override + public int hashCode() { + return Objects.hashCode(statement); + } + /** * Helper method to build a subquery * diff --git a/src/main/java/io/github/willena/influxql/ast/source/Target.java b/src/main/java/io/github/willena/influxql/ast/source/Target.java index 4826d5b..afc5c71 100644 --- a/src/main/java/io/github/willena/influxql/ast/source/Target.java +++ b/src/main/java/io/github/willena/influxql/ast/source/Target.java @@ -20,6 +20,7 @@ import static io.github.willena.influxql.ast.utils.Utils.ensureDefined; import io.github.willena.influxql.ast.Node; +import java.util.Objects; /** Destination Measurement when using SELECT INTO statements */ public class Target implements Node { @@ -35,6 +36,19 @@ public Target(Measurement measurement) { ensureDefined("measurement", measurement); } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Target target = (Target) o; + return Objects.equals(measurement, target.measurement); + } + + @Override + public int hashCode() { + return Objects.hashCode(measurement); + } + /** * Build a {@link Target} from {@link Measurement} * diff --git a/src/main/java/io/github/willena/influxql/ast/statement/AlterRetentionPolicyStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/AlterRetentionPolicyStatement.java index 42d7957..e624073 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/AlterRetentionPolicyStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/AlterRetentionPolicyStatement.java @@ -21,7 +21,10 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.time.Duration; +import java.util.Objects; public class AlterRetentionPolicyStatement implements Statement { // Name of policy to alter. @@ -49,6 +52,48 @@ private AlterRetentionPolicyStatement(Builder builder) { ensureDefined("database", database); } + public String getName() { + return name; + } + + public String getDatabase() { + return database; + } + + public Duration getDuration() { + return duration; + } + + public Integer getReplication() { + return replication; + } + + public boolean isDefault() { + return isDefault; + } + + public Duration getShardGroupDuration() { + return shardGroupDuration; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AlterRetentionPolicyStatement that = (AlterRetentionPolicyStatement) o; + return isDefault == that.isDefault + && Objects.equals(name, that.name) + && Objects.equals(database, that.database) + && Objects.equals(duration, that.duration) + && Objects.equals(replication, that.replication) + && Objects.equals(shardGroupDuration, that.shardGroupDuration); + } + + @Override + public int hashCode() { + return Objects.hash(name, database, duration, replication, isDefault, shardGroupDuration); + } + @Override public String toString() { var buf = new StringBuilder(); @@ -79,6 +124,13 @@ public String toString() { return buf.toString(); } + public static AlterRetentionPolicyStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::alter_retention_policy_stmt, + (c, a) -> a.visitAlter_retention_policy_stmt(c), + sql); + } + /** {@code AlterRetentionPolicyStatement} builder static inner class. */ public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/CreateContinuousQueryStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/CreateContinuousQueryStatement.java index 07b5d9a..31766e1 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/CreateContinuousQueryStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/CreateContinuousQueryStatement.java @@ -21,7 +21,10 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.time.Duration; +import java.util.Objects; import java.util.function.Function; public class CreateContinuousQueryStatement implements Statement { @@ -43,6 +46,43 @@ private CreateContinuousQueryStatement(Builder builder) { ensureDefined("selectStatement", selectStatement); } + public String getName() { + return name; + } + + public String getDatabase() { + return database; + } + + public SelectStatement getSelectStatement() { + return selectStatement; + } + + public Duration getResampleEvery() { + return resampleEvery; + } + + public Duration getResampleFor() { + return resampleFor; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CreateContinuousQueryStatement that = (CreateContinuousQueryStatement) o; + return Objects.equals(name, that.name) + && Objects.equals(database, that.database) + && Objects.equals(selectStatement, that.selectStatement) + && Objects.equals(resampleEvery, that.resampleEvery) + && Objects.equals(resampleFor, that.resampleFor); + } + + @Override + public int hashCode() { + return Objects.hash(name, database, selectStatement, resampleEvery, resampleFor); + } + @Override public String toString() { StringBuilder buf = new StringBuilder(); @@ -69,6 +109,13 @@ public String toString() { return buf.toString(); } + public static CreateContinuousQueryStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::create_continuous_query_stmt, + (c, a) -> a.visitCreate_continuous_query_stmt(c), + sql); + } + /** {@code CreateContinuousQueryStatement} builder static inner class. */ public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/CreateDatabaseStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/CreateDatabaseStatement.java index f79405e..67c9d0a 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/CreateDatabaseStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/CreateDatabaseStatement.java @@ -22,7 +22,10 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; import io.github.willena.influxql.ast.extra.RetentionPolicy; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.time.Duration; +import java.util.Objects; public class CreateDatabaseStatement implements Statement { private final String name; @@ -66,6 +69,35 @@ public String toString() { return buf.toString(); } + public String getName() { + return name; + } + + public RetentionPolicy getRetentionPolicy() { + return retentionPolicy; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CreateDatabaseStatement that = (CreateDatabaseStatement) o; + return Objects.equals(name, that.name) + && Objects.equals(retentionPolicy, that.retentionPolicy); + } + + @Override + public int hashCode() { + return Objects.hash(name, retentionPolicy); + } + + public static CreateDatabaseStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::create_database_stmt, + (c, a) -> a.visitCreate_database_stmt(c), + sql); + } + /** {@code CreateDatabaseStatement} builder static inner class. */ public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/CreateRetentionPolicyStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/CreateRetentionPolicyStatement.java index f667308..05a85f6 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/CreateRetentionPolicyStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/CreateRetentionPolicyStatement.java @@ -21,7 +21,10 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.time.Duration; +import java.util.Objects; public class CreateRetentionPolicyStatement implements Statement { private final String name; @@ -66,6 +69,55 @@ public String toString() { return buf.toString(); } + public String getName() { + return name; + } + + public String getDatabase() { + return database; + } + + public Duration getDuration() { + return duration; + } + + public Integer getReplication() { + return replication; + } + + public boolean isDefault() { + return isDefault; + } + + public Duration getShardGroupDuration() { + return shardGroupDuration; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CreateRetentionPolicyStatement that = (CreateRetentionPolicyStatement) o; + return isDefault == that.isDefault + && Objects.equals(name, that.name) + && Objects.equals(database, that.database) + && Objects.equals(duration, that.duration) + && Objects.equals(replication, that.replication) + && Objects.equals(shardGroupDuration, that.shardGroupDuration); + } + + @Override + public int hashCode() { + return Objects.hash(name, database, duration, replication, isDefault, shardGroupDuration); + } + + public static CreateRetentionPolicyStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::create_retention_policy_stmt, + (c, a) -> a.visitCreate_retention_policy_stmt(c), + sql); + } + /** {@code CreateRetentionPolicyStatement} builder static inner class. */ public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/CreateSubscriptionStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/CreateSubscriptionStatement.java index 49b57ab..7d0c56a 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/CreateSubscriptionStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/CreateSubscriptionStatement.java @@ -24,8 +24,11 @@ import io.github.willena.influxql.ast.Statement; import io.github.willena.influxql.ast.token.DestinationMode; import io.github.willena.influxql.ast.utils.Utils; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.LinkedList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; public class CreateSubscriptionStatement implements Statement { @@ -63,6 +66,50 @@ public String toString() { + destinations.stream().map(Utils::quoteString).collect(Collectors.joining(", ")); } + public static CreateSubscriptionStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::create_subscription_stmt, + (c, a) -> a.visitCreate_subscription_stmt(c), + sql); + } + + public String getName() { + return name; + } + + public String getDatabase() { + return database; + } + + public String getRetentionPolicy() { + return retentionPolicy; + } + + public List getDestinations() { + return destinations; + } + + public DestinationMode getMode() { + return mode; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CreateSubscriptionStatement that = (CreateSubscriptionStatement) o; + return Objects.equals(name, that.name) + && Objects.equals(database, that.database) + && Objects.equals(retentionPolicy, that.retentionPolicy) + && Objects.equals(destinations, that.destinations) + && mode == that.mode; + } + + @Override + public int hashCode() { + return Objects.hash(name, database, retentionPolicy, destinations, mode); + } + /** {@code CreateSubscriptionStatement} builder static inner class. */ public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/CreateUserStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/CreateUserStatement.java index 4182a40..cb61eb6 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/CreateUserStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/CreateUserStatement.java @@ -21,6 +21,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class CreateUserStatement implements Statement { private final String name; @@ -49,6 +52,38 @@ public String toString() { return buf.toString(); } + public static CreateUserStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::create_user_stmt, (c, a) -> a.visitCreate_user_stmt(c), sql); + } + + public String getName() { + return name; + } + + public String getPassword() { + return password; + } + + public boolean isAdmin() { + return admin; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CreateUserStatement that = (CreateUserStatement) o; + return admin == that.admin + && Objects.equals(name, that.name) + && Objects.equals(password, that.password); + } + + @Override + public int hashCode() { + return Objects.hash(name, password, admin); + } + /** {@code CreateUserStatement} builder static inner class. */ public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DeleteSeriesStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DeleteSeriesStatement.java index 450733d..8cf9477 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DeleteSeriesStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DeleteSeriesStatement.java @@ -22,7 +22,10 @@ import io.github.willena.influxql.ast.Source; import io.github.willena.influxql.ast.Statement; import io.github.willena.influxql.ast.source.Sources; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class DeleteSeriesStatement implements Statement { private final Sources sources; @@ -49,6 +52,32 @@ public String toString() { return buf.toString(); } + public static DeleteSeriesStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::delete_stmt, (c, a) -> a.visitDelete_stmt(c), sql); + } + + public Sources getSources() { + return sources; + } + + public Expression getCondition() { + return condition; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DeleteSeriesStatement that = (DeleteSeriesStatement) o; + return Objects.equals(sources, that.sources) && Objects.equals(condition, that.condition); + } + + @Override + public int hashCode() { + return Objects.hash(sources, condition); + } + /** {@code DeleteSeriesStatement} builder static inner class. */ public static final class Builder implements Buildable { private Sources sources; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DeleteStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DeleteStatement.java deleted file mode 100644 index 1a8f29a..0000000 --- a/src/main/java/io/github/willena/influxql/ast/statement/DeleteStatement.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * InfluxQL Java package - * Copyright 2024 Guillaume VILLENA also known as "Willena" on GitHub - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * 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. - */ - -package io.github.willena.influxql.ast.statement; - -import io.github.willena.influxql.ast.Buildable; -import io.github.willena.influxql.ast.Expression; -import io.github.willena.influxql.ast.Source; -import io.github.willena.influxql.ast.Statement; - -/** - * @deprecated use {@link DeleteSeriesStatement} For some reason, this is included in the Golang - * package. Implemented it, but it is useless. Many things are invalid given the samples from - * the documentation and the parser syntax. - */ -@Deprecated(forRemoval = true) -public class DeleteStatement implements Statement { - private final Source source; - private final Expression condition; - - private DeleteStatement(Builder builder) { - source = builder.source; - condition = builder.condition; - } - - @Override - public String toString() { - var buf = new StringBuilder(); - buf.append("DELETE FROM "); - buf.append(source); - if (condition != null) { - buf.append(" WHERE "); - buf.append(condition); - } - return buf.toString(); - } - - /** - * {@code DeleteStatement} builder static inner class. - * - * @deprecated use {@link DeleteSeriesStatement.Builder} - */ - @Deprecated(forRemoval = true) - public static final class Builder implements Buildable { - private Source source; - private Expression condition; - - public Builder() {} - - /** - * Sets the {@code source} and returns a reference to this Builder enabling method chaining. - * - * @param source the {@code source} to set - * @return a reference to this Builder - */ - public Builder from(Source source) { - this.source = source; - return this; - } - - /** - * Sets the {@code condition} and returns a reference to this Builder enabling method - * chaining. - * - * @param condition the {@code condition} to set - * @return a reference to this Builder - */ - public Builder where(Expression condition) { - this.condition = condition; - return this; - } - - /** - * Returns a {@code DeleteStatement} built from the parameters previously set. - * - * @return a {@code DeleteStatement} built with parameters of this {@code - * DeleteStatement.Builder} - */ - public DeleteStatement build() { - return new DeleteStatement(this); - } - } -} diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DropContinuousQueryStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DropContinuousQueryStatement.java index 664fa57..b4fbbf3 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DropContinuousQueryStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DropContinuousQueryStatement.java @@ -22,6 +22,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class DropContinuousQueryStatement implements Statement { @@ -43,6 +46,34 @@ public String toString() { + quoteIdentifier(database); } + public String getName() { + return name; + } + + public String getDatabase() { + return database; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DropContinuousQueryStatement that = (DropContinuousQueryStatement) o; + return Objects.equals(name, that.name) && Objects.equals(database, that.database); + } + + @Override + public int hashCode() { + return Objects.hash(name, database); + } + + public static DropContinuousQueryStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::drop_continuous_query_stmt, + (c, a) -> a.visitDrop_continuous_query_stmt(c), + sql); + } + public static final class Builder implements Buildable { private String name; private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DropDatabaseStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DropDatabaseStatement.java index e7b2e3e..d9a7f6f 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DropDatabaseStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DropDatabaseStatement.java @@ -21,6 +21,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class DropDatabaseStatement implements Statement { private final String name; @@ -34,6 +37,28 @@ public String toString() { return "DROP DATABASE " + quoteIdentifier(name); } + public static DropDatabaseStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::drop_database_stmt, (c, a) -> a.visitDrop_database_stmt(c), sql); + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DropDatabaseStatement that = (DropDatabaseStatement) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hashCode(name); + } + public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DropMeasurementStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DropMeasurementStatement.java index bb271e6..7470253 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DropMeasurementStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DropMeasurementStatement.java @@ -22,6 +22,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class DropMeasurementStatement implements Statement { private final String name; @@ -36,6 +39,30 @@ public String toString() { return "DROP MEASUREMENT " + quoteIdentifier(name); } + public static DropMeasurementStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::drop_measurement_stmt, + (c, a) -> a.visitDrop_measurement_stmt(c), + sql); + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DropMeasurementStatement that = (DropMeasurementStatement) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hashCode(name); + } + public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DropRetentionPolicyStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DropRetentionPolicyStatement.java index 9a4bd97..9442a5f 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DropRetentionPolicyStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DropRetentionPolicyStatement.java @@ -22,6 +22,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class DropRetentionPolicyStatement implements Statement { @@ -43,6 +46,34 @@ public String toString() { + quoteIdentifier(database); } + public String getName() { + return name; + } + + public String getDatabase() { + return database; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DropRetentionPolicyStatement that = (DropRetentionPolicyStatement) o; + return Objects.equals(name, that.name) && Objects.equals(database, that.database); + } + + @Override + public int hashCode() { + return Objects.hash(name, database); + } + + public static DropRetentionPolicyStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::drop_retention_policy_stmt, + (c, a) -> a.visitDrop_retention_policy_stmt(c), + sql); + } + public static final class Builder implements Buildable { private String name; private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DropSeriesStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DropSeriesStatement.java index 0e6a255..694192b 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DropSeriesStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DropSeriesStatement.java @@ -22,7 +22,10 @@ import io.github.willena.influxql.ast.Source; import io.github.willena.influxql.ast.Statement; import io.github.willena.influxql.ast.source.Sources; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class DropSeriesStatement implements Statement { private final Sources sources; @@ -50,6 +53,32 @@ public String toString() { return buf.toString(); } + public Sources getSources() { + return sources; + } + + public Expression getCondition() { + return condition; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DropSeriesStatement that = (DropSeriesStatement) o; + return Objects.equals(sources, that.sources) && Objects.equals(condition, that.condition); + } + + @Override + public int hashCode() { + return Objects.hash(sources, condition); + } + + public static DropSeriesStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::drop_series_stmt, (c, a) -> a.visitDrop_series_stmt(c), sql); + } + /** {@code DropSeriesStatement} builder static inner class. */ public static final class Builder implements Buildable { private Sources sources; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DropShardStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DropShardStatement.java index 9aa670f..316167e 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DropShardStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DropShardStatement.java @@ -21,6 +21,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class DropShardStatement implements Statement { private final Long id; @@ -35,6 +38,28 @@ public String toString() { return "DROP SHARD " + id; } + public static DropShardStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::drop_shard_stmt, (c, a) -> a.visitDrop_shard_stmt(c), sql); + } + + public Long getId() { + return id; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DropShardStatement that = (DropShardStatement) o; + return Objects.equals(id, that.id); + } + + @Override + public int hashCode() { + return Objects.hashCode(id); + } + public static final class Builder implements Buildable { private Long id; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DropSubscriptionStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DropSubscriptionStatement.java index b710062..b54b931 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DropSubscriptionStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DropSubscriptionStatement.java @@ -22,6 +22,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class DropSubscriptionStatement implements Statement { private final String name; @@ -38,6 +41,33 @@ private DropSubscriptionStatement(Builder builder) { ensureDefined("retentionPolicy", retentionPolicy); } + public String getName() { + return name; + } + + public String getDatabase() { + return database; + } + + public String getRetentionPolicy() { + return retentionPolicy; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DropSubscriptionStatement that = (DropSubscriptionStatement) o; + return Objects.equals(name, that.name) + && Objects.equals(database, that.database) + && Objects.equals(retentionPolicy, that.retentionPolicy); + } + + @Override + public int hashCode() { + return Objects.hash(name, database, retentionPolicy); + } + @Override public String toString() { return "DROP SUBSCRIPTION " @@ -48,6 +78,13 @@ public String toString() { + quoteIdentifier(retentionPolicy); } + public static DropSubscriptionStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::drop_subscription_stmt, + (c, a) -> a.visitDrop_subscription_stmt(c), + sql); + } + public static final class Builder implements Buildable { private String name; private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/DropUserStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/DropUserStatement.java index 9abc949..3a66b16 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/DropUserStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/DropUserStatement.java @@ -22,6 +22,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class DropUserStatement implements Statement { private final String name; @@ -36,6 +39,28 @@ public String toString() { return "DROP USER " + quoteIdentifier(name); } + public static DropUserStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::drop_user_stmt, (c, a) -> a.visitDrop_user_stmt(c), sql); + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DropUserStatement that = (DropUserStatement) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hashCode(name); + } + public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ExplainStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ExplainStatement.java index fed17a2..57a669b 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ExplainStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ExplainStatement.java @@ -21,6 +21,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; import java.util.function.Function; public class ExplainStatement implements Statement { @@ -49,6 +52,38 @@ public String toString() { return buf.toString(); } + public SelectStatement getStatement() { + return statement; + } + + public boolean isAnalyze() { + return analyze; + } + + public boolean isVerbose() { + return verbose; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ExplainStatement that = (ExplainStatement) o; + return analyze == that.analyze + && verbose == that.verbose + && Objects.equals(statement, that.statement); + } + + @Override + public int hashCode() { + return Objects.hash(statement, analyze, verbose); + } + + public static ExplainStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::explain_stmt, (c, a) -> a.visitExplain_stmt(c), sql); + } + /** {@code ExplainStatement} builder static inner class. */ public static final class Builder implements Buildable { private SelectStatement statement; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/GrantAdminStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/GrantAdminStatement.java deleted file mode 100644 index 5a267bc..0000000 --- a/src/main/java/io/github/willena/influxql/ast/statement/GrantAdminStatement.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * InfluxQL Java package - * Copyright 2024 Guillaume VILLENA also known as "Willena" on GitHub - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * 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. - */ - -package io.github.willena.influxql.ast.statement; - -import static io.github.willena.influxql.ast.utils.Utils.ensureDefined; -import static io.github.willena.influxql.ast.utils.Utils.quoteIdentifier; - -import io.github.willena.influxql.ast.Buildable; -import io.github.willena.influxql.ast.Statement; - -/** @deprecated use {@link GrantStatement} Redundant. Grammar does not define this statement. */ -@Deprecated(forRemoval = true) -public class GrantAdminStatement implements Statement { - private final String user; - - private GrantAdminStatement(Builder builder) { - user = builder.user; - ensureDefined("user", user); - } - - @Override - public String toString() { - return "GRANT ALL PRIVILEGES TO " + quoteIdentifier(user); - } - - /** @deprecated use {@link GrantStatement.Builder} */ - @Deprecated(forRemoval = true) - public static final class Builder implements Buildable { - private String user; - - public Builder() {} - - public Builder to(String user) { - this.user = user; - return this; - } - - public GrantAdminStatement build() { - return new GrantAdminStatement(this); - } - } -} diff --git a/src/main/java/io/github/willena/influxql/ast/statement/GrantStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/GrantStatement.java index 5914272..29aaa30 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/GrantStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/GrantStatement.java @@ -23,6 +23,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; import io.github.willena.influxql.ast.token.Privilege; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class GrantStatement implements Statement { private final Privilege privilege; @@ -54,6 +57,38 @@ public String toString() { return builder.toString(); } + public Privilege getPrivilege() { + return privilege; + } + + public String getDatabase() { + return database; + } + + public String getUsername() { + return username; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + GrantStatement that = (GrantStatement) o; + return privilege == that.privilege + && Objects.equals(database, that.database) + && Objects.equals(username, that.username); + } + + @Override + public int hashCode() { + return Objects.hash(privilege, database, username); + } + + public static GrantStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::grant_stmt, (c, a) -> a.visitGrant_stmt(c), sql); + } + public static final class Builder implements Buildable { private Privilege privilege; private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/KillQueryStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/KillQueryStatement.java index f6853d5..d0d6bad 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/KillQueryStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/KillQueryStatement.java @@ -22,6 +22,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class KillQueryStatement implements Statement { private final Long queryId; @@ -45,6 +48,34 @@ public String toString() { return buf.toString(); } + public Long getQueryId() { + return queryId; + } + + public String getHost() { + return host; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + KillQueryStatement that = (KillQueryStatement) o; + return Objects.equals(queryId, that.queryId) && Objects.equals(host, that.host); + } + + @Override + public int hashCode() { + return Objects.hash(queryId, host); + } + + public static KillQueryStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::kill_query_statement, + (c, a) -> a.visitKill_query_statement(c), + sql); + } + /** {@code KillQueryStatement} builder static inner class. */ public static final class Builder implements Buildable { private Long queryId; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/RevokeAdminStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/RevokeAdminStatement.java deleted file mode 100644 index 176277c..0000000 --- a/src/main/java/io/github/willena/influxql/ast/statement/RevokeAdminStatement.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * InfluxQL Java package - * Copyright 2024 Guillaume VILLENA also known as "Willena" on GitHub - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * 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. - */ - -package io.github.willena.influxql.ast.statement; - -import static io.github.willena.influxql.ast.utils.Utils.ensureDefined; -import static io.github.willena.influxql.ast.utils.Utils.quoteIdentifier; - -import io.github.willena.influxql.ast.Buildable; -import io.github.willena.influxql.ast.Statement; - -/** Use {@link RevokeStatement} */ -@Deprecated(forRemoval = true) -public class RevokeAdminStatement implements Statement { - private final String user; - - private RevokeAdminStatement(Builder builder) { - user = builder.user; - ensureDefined("user", user); - } - - @Override - public String toString() { - return "REVOKE ALL PRIVILEGES FROM " + quoteIdentifier(user); - } - - /** Use {@link RevokeStatement.Builder} */ - @Deprecated(forRemoval = true) - public static final class Builder implements Buildable { - private String user; - - public Builder() {} - - public Builder from(String user) { - this.user = user; - return this; - } - - public RevokeAdminStatement build() { - return new RevokeAdminStatement(this); - } - } -} diff --git a/src/main/java/io/github/willena/influxql/ast/statement/RevokeStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/RevokeStatement.java index 0f3f291..c5b7197 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/RevokeStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/RevokeStatement.java @@ -23,6 +23,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; import io.github.willena.influxql.ast.token.Privilege; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class RevokeStatement implements Statement { private final Privilege privilege; @@ -54,6 +57,38 @@ public String toString() { return builder.toString(); } + public Privilege getPrivilege() { + return privilege; + } + + public String getDatabase() { + return database; + } + + public String getUsername() { + return username; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RevokeStatement that = (RevokeStatement) o; + return privilege == that.privilege + && Objects.equals(database, that.database) + && Objects.equals(username, that.username); + } + + @Override + public int hashCode() { + return Objects.hash(privilege, database, username); + } + + public static RevokeStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::revoke_stmt, (c, a) -> a.visitRevoke_stmt(c), sql); + } + public static final class Builder implements Buildable { private Privilege privilege; private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/SelectStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/SelectStatement.java index de69c19..8ef3b72 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/SelectStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/SelectStatement.java @@ -29,8 +29,11 @@ import io.github.willena.influxql.ast.source.Sources; import io.github.willena.influxql.ast.source.Target; import io.github.willena.influxql.ast.token.FillOption; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.TimeZone; public class SelectStatement implements Statement { @@ -115,6 +118,101 @@ public String toString() { return buf.toString(); } + public Fields getFields() { + return fields; + } + + public Target getTarget() { + return target; + } + + public Dimensions getDimensions() { + return dimensions; + } + + public Sources getSources() { + return sources; + } + + public Expression getCondition() { + return condition; + } + + public SortFields getSortFields() { + return sortFields; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + public int getsLimit() { + return sLimit; + } + + public int getsOffset() { + return sOffset; + } + + public FillOption getFill() { + return fill; + } + + public Literal getFillValue() { + return fillValue; + } + + public TimeZone getLocation() { + return location; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SelectStatement that = (SelectStatement) o; + return limit == that.limit + && offset == that.offset + && sLimit == that.sLimit + && sOffset == that.sOffset + && Objects.equals(fields, that.fields) + && Objects.equals(target, that.target) + && Objects.equals(dimensions, that.dimensions) + && Objects.equals(sources, that.sources) + && Objects.equals(condition, that.condition) + && Objects.equals(sortFields, that.sortFields) + && fill == that.fill + && Objects.equals(fillValue, that.fillValue) + && Objects.equals(location, that.location); + } + + @Override + public int hashCode() { + return Objects.hash( + fields, + target, + dimensions, + sources, + condition, + sortFields, + limit, + offset, + sLimit, + sOffset, + fill, + fillValue, + location); + } + + public static SelectStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::select_stmt, (c, a) -> a.visitSelect_stmt(c), sql); + } + /** {@code SelectStatement} builder static inner class. */ public static final class Builder implements Buildable { private Fields fields; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/SetPasswordUserStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/SetPasswordUserStatement.java index 6a4b7fe..2c989c1 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/SetPasswordUserStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/SetPasswordUserStatement.java @@ -21,6 +21,7 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import java.util.Objects; public class SetPasswordUserStatement implements Statement { private final String password; @@ -53,6 +54,33 @@ public String toString() { return buf.toString(); } + public String getPassword() { + return password; + } + + public String getName() { + return name; + } + + public boolean isRedacted() { + return redacted; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SetPasswordUserStatement that = (SetPasswordUserStatement) o; + return redacted == that.redacted + && Objects.equals(password, that.password) + && Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(password, name, redacted); + } + public static final class Builder implements Buildable { private String password; private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowContinuousQueriesStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowContinuousQueriesStatement.java index bc157a3..45269be 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowContinuousQueriesStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowContinuousQueriesStatement.java @@ -18,6 +18,8 @@ package io.github.willena.influxql.ast.statement; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; public class ShowContinuousQueriesStatement implements Statement { public ShowContinuousQueriesStatement() {} @@ -26,6 +28,13 @@ public static ShowContinuousQueriesStatement showContinuousQueries() { return new ShowContinuousQueriesStatement(); } + public static ShowContinuousQueriesStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_continuous_queries_stmt, + (c, a) -> a.visitShow_continuous_queries_stmt(c), + sql); + } + @Override public String toString() { return "SHOW CONTINUOUS QUERIES"; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowDatabasesStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowDatabasesStatement.java index 6a91f54..57be2c7 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowDatabasesStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowDatabasesStatement.java @@ -18,6 +18,8 @@ package io.github.willena.influxql.ast.statement; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; public class ShowDatabasesStatement implements Statement { public ShowDatabasesStatement() {} @@ -26,6 +28,11 @@ public static ShowDatabasesStatement showDatabases() { return new ShowDatabasesStatement(); } + public static ShowDatabasesStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_databases_stmt, (c, a) -> a.visitShow_databases_stmt(c), sql); + } + @Override public String toString() { return "SHOW DATABASES"; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowDiagnosticsStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowDiagnosticsStatement.java index 76051f4..1d6d473 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowDiagnosticsStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowDiagnosticsStatement.java @@ -21,6 +21,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class ShowDiagnosticsStatement implements Statement { private final String module; @@ -40,6 +43,30 @@ public String toString() { return buf.toString(); } + public static ShowDiagnosticsStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_diagnostics_stmt, + (c, a) -> a.visitShow_diagnostics_stmt(c), + sql); + } + + public String getModule() { + return module; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowDiagnosticsStatement that = (ShowDiagnosticsStatement) o; + return Objects.equals(module, that.module); + } + + @Override + public int hashCode() { + return Objects.hashCode(module); + } + public static final class Builder implements Buildable { private String module; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowFieldKeyCardinalityStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowFieldKeyCardinalityStatement.java index 7e7f54c..94999e6 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowFieldKeyCardinalityStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowFieldKeyCardinalityStatement.java @@ -26,7 +26,10 @@ import io.github.willena.influxql.ast.expr.Dimension; import io.github.willena.influxql.ast.expr.Dimensions; import io.github.willena.influxql.ast.source.Sources; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowFieldKeyCardinalityStatement implements Statement { private final String database; @@ -83,6 +86,60 @@ public String toString() { return buf.toString(); } + public String getDatabase() { + return database; + } + + public boolean isExact() { + return exact; + } + + public Sources getSources() { + return sources; + } + + public Expression getCondition() { + return condition; + } + + public Dimensions getDimensions() { + return dimensions; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowFieldKeyCardinalityStatement that = (ShowFieldKeyCardinalityStatement) o; + return exact == that.exact + && limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(sources, that.sources) + && Objects.equals(condition, that.condition) + && Objects.equals(dimensions, that.dimensions); + } + + @Override + public int hashCode() { + return Objects.hash(database, exact, sources, condition, dimensions, limit, offset); + } + + public static ShowFieldKeyCardinalityStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_field_key_cardinality_stmt, + (c, a) -> a.visitShow_field_key_cardinality_stmt(c), + sql); + } + /** {@code ShowFieldKeyCardinalityStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowFieldKeysStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowFieldKeysStatement.java index 0c861be..b6090f1 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowFieldKeysStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowFieldKeysStatement.java @@ -25,7 +25,10 @@ import io.github.willena.influxql.ast.field.SortField; import io.github.willena.influxql.ast.field.SortFields; import io.github.willena.influxql.ast.source.Sources; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowFieldKeysStatement implements Statement { private final String database; @@ -70,6 +73,50 @@ public String toString() { return buf.toString(); } + public static ShowFieldKeysStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_field_keys_stmt, + (c, a) -> a.visitShow_field_keys_stmt(c), + sql); + } + + public String getDatabase() { + return database; + } + + public Sources getSources() { + return sources; + } + + public SortFields getSortFields() { + return sortFields; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowFieldKeysStatement that = (ShowFieldKeysStatement) o; + return limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(sources, that.sources) + && Objects.equals(sortFields, that.sortFields); + } + + @Override + public int hashCode() { + return Objects.hash(database, sources, sortFields, limit, offset); + } + /** {@code ShowFieldKeysStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowGrantsForUserStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowGrantsForUserStatement.java index 1709317..39e2ebd 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowGrantsForUserStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowGrantsForUserStatement.java @@ -22,6 +22,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class ShowGrantsForUserStatement implements Statement { private final String name; @@ -36,6 +39,28 @@ public String toString() { return "SHOW GRANTS FOR " + quoteIdentifier(name); } + public static ShowGrantsForUserStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_grants_stmt, (c, a) -> a.visitShow_grants_stmt(c), sql); + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowGrantsForUserStatement that = (ShowGrantsForUserStatement) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hashCode(name); + } + public static final class Builder implements Buildable { private String name; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowMeasurementCardinalityStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowMeasurementCardinalityStatement.java index 21e27b4..7a82622 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowMeasurementCardinalityStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowMeasurementCardinalityStatement.java @@ -26,7 +26,10 @@ import io.github.willena.influxql.ast.expr.Dimension; import io.github.willena.influxql.ast.expr.Dimensions; import io.github.willena.influxql.ast.source.Sources; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowMeasurementCardinalityStatement implements Statement { private final boolean exact; @@ -84,6 +87,60 @@ public String toString() { return buf.toString(); } + public boolean isExact() { + return exact; + } + + public String getDatabase() { + return database; + } + + public Sources getSources() { + return sources; + } + + public Expression getCondition() { + return condition; + } + + public Dimensions getDimensions() { + return dimensions; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowMeasurementCardinalityStatement that = (ShowMeasurementCardinalityStatement) o; + return exact == that.exact + && limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(sources, that.sources) + && Objects.equals(condition, that.condition) + && Objects.equals(dimensions, that.dimensions); + } + + @Override + public int hashCode() { + return Objects.hash(exact, database, sources, condition, dimensions, limit, offset); + } + + public static ShowMeasurementCardinalityStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_measurement_cardinality_stmt, + (c, a) -> a.visitShow_measurement_cardinality_stmt(c), + sql); + } + /** {@code ShowMeasurementCardinalityStatement} builder static inner class. */ public static final class Builder implements Buildable { private boolean exact; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowMeasurementsStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowMeasurementsStatement.java index cb7ced1..26cdbd7 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowMeasurementsStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowMeasurementsStatement.java @@ -23,7 +23,10 @@ import io.github.willena.influxql.ast.field.SortField; import io.github.willena.influxql.ast.field.SortFields; import io.github.willena.influxql.ast.source.Measurement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowMeasurementsStatement implements Statement { private final String database; @@ -90,6 +93,61 @@ public String toString() { return buf.toString(); } + public String getDatabase() { + return database; + } + + public String getRetentionPolicy() { + return retentionPolicy; + } + + public Measurement getSource() { + return source; + } + + public Expression getCondition() { + return condition; + } + + public SortFields getSortFields() { + return sortFields; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowMeasurementsStatement that = (ShowMeasurementsStatement) o; + return limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(retentionPolicy, that.retentionPolicy) + && Objects.equals(source, that.source) + && Objects.equals(condition, that.condition) + && Objects.equals(sortFields, that.sortFields); + } + + @Override + public int hashCode() { + return Objects.hash( + database, retentionPolicy, source, condition, sortFields, limit, offset); + } + + public static ShowMeasurementsStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_measurements_stmt, + (c, a) -> a.visitShow_measurements_stmt(c), + sql); + } + /** {@code ShowMeasurementsStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowQueriesStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowQueriesStatement.java index 6b1172e..3821c6d 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowQueriesStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowQueriesStatement.java @@ -18,6 +18,8 @@ package io.github.willena.influxql.ast.statement; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; public class ShowQueriesStatement implements Statement { public ShowQueriesStatement() {} @@ -26,6 +28,11 @@ public static ShowQueriesStatement showQueries() { return new ShowQueriesStatement(); } + public static ShowQueriesStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_queries_stmt, (c, a) -> a.visitShow_queries_stmt(c), sql); + } + @Override public String toString() { return "SHOW QUERIES"; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowRetentionPoliciesStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowRetentionPoliciesStatement.java index 23fe656..e60ef8c 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowRetentionPoliciesStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowRetentionPoliciesStatement.java @@ -21,6 +21,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class ShowRetentionPoliciesStatement implements Statement { private final String database; @@ -40,6 +43,30 @@ public String toString() { return buf.toString(); } + public static ShowRetentionPoliciesStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_retention_policies_stmt, + (c, a) -> a.visitShow_retention_policies_stmt(c), + sql); + } + + public String getDatabase() { + return database; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowRetentionPoliciesStatement that = (ShowRetentionPoliciesStatement) o; + return Objects.equals(database, that.database); + } + + @Override + public int hashCode() { + return Objects.hashCode(database); + } + public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowSeriesCardinalityStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowSeriesCardinalityStatement.java index 2da541a..42ea0b3 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowSeriesCardinalityStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowSeriesCardinalityStatement.java @@ -26,7 +26,10 @@ import io.github.willena.influxql.ast.expr.Dimension; import io.github.willena.influxql.ast.expr.Dimensions; import io.github.willena.influxql.ast.source.Sources; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowSeriesCardinalityStatement implements Statement { private final String database; @@ -84,6 +87,60 @@ public String toString() { return buf.toString(); } + public String getDatabase() { + return database; + } + + public boolean isExact() { + return exact; + } + + public Sources getSources() { + return sources; + } + + public Expression getCondition() { + return condition; + } + + public Dimensions getDimensions() { + return dimensions; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowSeriesCardinalityStatement that = (ShowSeriesCardinalityStatement) o; + return exact == that.exact + && limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(sources, that.sources) + && Objects.equals(condition, that.condition) + && Objects.equals(dimensions, that.dimensions); + } + + @Override + public int hashCode() { + return Objects.hash(database, exact, sources, condition, dimensions, limit, offset); + } + + public static ShowSeriesCardinalityStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_series_cardinality_stmt, + (c, a) -> a.visitShow_series_cardinality_stmt(c), + sql); + } + /** {@code ShowSeriesCardinalityStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowSeriesStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowSeriesStatement.java index 5a90b0b..208e03d 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowSeriesStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowSeriesStatement.java @@ -26,7 +26,10 @@ import io.github.willena.influxql.ast.field.SortField; import io.github.willena.influxql.ast.field.SortFields; import io.github.willena.influxql.ast.source.Sources; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowSeriesStatement implements Statement { private final String database; @@ -78,6 +81,53 @@ public String toString() { return buf.toString(); } + public String getDatabase() { + return database; + } + + public Sources getSources() { + return sources; + } + + public Expression getConditions() { + return conditions; + } + + public SortFields getSortFields() { + return sortFields; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowSeriesStatement that = (ShowSeriesStatement) o; + return limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(sources, that.sources) + && Objects.equals(conditions, that.conditions) + && Objects.equals(sortFields, that.sortFields); + } + + @Override + public int hashCode() { + return Objects.hash(database, sources, conditions, sortFields, limit, offset); + } + + public static ShowSeriesStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_series_stmt, (c, a) -> a.visitShow_series_stmt(c), sql); + } + /** {@code ShowSeriesStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowShardGroupsStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowShardGroupsStatement.java index 3192122..d210674 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowShardGroupsStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowShardGroupsStatement.java @@ -18,6 +18,8 @@ package io.github.willena.influxql.ast.statement; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; public class ShowShardGroupsStatement implements Statement { public ShowShardGroupsStatement() {} @@ -26,6 +28,13 @@ public static ShowShardGroupsStatement showShardGroups() { return new ShowShardGroupsStatement(); } + public static ShowShardGroupsStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_shard_groups_stmt, + (c, a) -> a.visitShow_shard_groups_stmt(c), + sql); + } + @Override public String toString() { return "SHOW SHARD GROUPS"; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowShardsStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowShardsStatement.java index 4473063..1046548 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowShardsStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowShardsStatement.java @@ -18,6 +18,8 @@ package io.github.willena.influxql.ast.statement; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; public class ShowShardsStatement implements Statement { public ShowShardsStatement() {} @@ -26,6 +28,11 @@ public static ShowShardsStatement showShards() { return new ShowShardsStatement(); } + public static ShowShardsStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_shards_stmt, (c, a) -> a.visitShow_shards_stmt(c), sql); + } + @Override public String toString() { return "SHOW SHARDS"; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowStatsStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowStatsStatement.java index e590a8f..b506325 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowStatsStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowStatsStatement.java @@ -21,6 +21,9 @@ import io.github.willena.influxql.ast.Buildable; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; +import java.util.Objects; public class ShowStatsStatement implements Statement { private final String module; @@ -40,6 +43,28 @@ public String toString() { return buf.toString(); } + public String getModule() { + return module; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowStatsStatement that = (ShowStatsStatement) o; + return Objects.equals(module, that.module); + } + + @Override + public int hashCode() { + return Objects.hashCode(module); + } + + public static ShowStatsStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_stats_stmt, (c, a) -> a.visitShow_stats_stmt(c), sql); + } + public static final class Builder implements Buildable { private String module; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowSubscriptionsStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowSubscriptionsStatement.java index 285d6d8..799f916 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowSubscriptionsStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowSubscriptionsStatement.java @@ -18,6 +18,8 @@ package io.github.willena.influxql.ast.statement; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; public class ShowSubscriptionsStatement implements Statement { public ShowSubscriptionsStatement() {} @@ -26,6 +28,13 @@ public static ShowSubscriptionsStatement showSubscriptions() { return new ShowSubscriptionsStatement(); } + public static ShowSubscriptionsStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_subscriptions_stmt, + (c, a) -> a.visitShow_subscriptions_stmt(c), + sql); + } + @Override public String toString() { return "SHOW SUBSCRIPTIONS"; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowTagKeyCardinalityStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowTagKeyCardinalityStatement.java index fa0661d..a71cf91 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowTagKeyCardinalityStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowTagKeyCardinalityStatement.java @@ -26,7 +26,10 @@ import io.github.willena.influxql.ast.expr.Dimension; import io.github.willena.influxql.ast.expr.Dimensions; import io.github.willena.influxql.ast.source.Sources; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowTagKeyCardinalityStatement implements Statement { private final String database; @@ -83,6 +86,60 @@ public String toString() { return buf.toString(); } + public String getDatabase() { + return database; + } + + public boolean isExact() { + return exact; + } + + public Sources getSources() { + return sources; + } + + public Expression getCondition() { + return condition; + } + + public Dimensions getDimensions() { + return dimensions; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowTagKeyCardinalityStatement that = (ShowTagKeyCardinalityStatement) o; + return exact == that.exact + && limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(sources, that.sources) + && Objects.equals(condition, that.condition) + && Objects.equals(dimensions, that.dimensions); + } + + @Override + public int hashCode() { + return Objects.hash(database, exact, sources, condition, dimensions, limit, offset); + } + + public static ShowTagKeyCardinalityStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_tag_key_cardinality_stmt, + (c, a) -> a.visitShow_tag_key_cardinality_stmt(c), + sql); + } + /** {@code ShowTagKeyCardinalityStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowTagKeysStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowTagKeysStatement.java index 479ecc8..95900d9 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowTagKeysStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowTagKeysStatement.java @@ -25,7 +25,10 @@ import io.github.willena.influxql.ast.field.SortFields; import io.github.willena.influxql.ast.source.Sources; import io.github.willena.influxql.ast.token.Operator; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowTagKeysStatement implements Statement { private final String database; @@ -104,6 +107,83 @@ public String toString() { return buf.toString(); } + public String getDatabase() { + return database; + } + + public Operator getOp() { + return op; + } + + public Literal getTagKeyExpr() { + return tagKeyExpr; + } + + public Sources getSources() { + return sources; + } + + public Expression getCondition() { + return condition; + } + + public SortFields getSortFields() { + return sortFields; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + public int getsLimit() { + return sLimit; + } + + public int getsOffset() { + return sOffset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowTagKeysStatement that = (ShowTagKeysStatement) o; + return limit == that.limit + && offset == that.offset + && sLimit == that.sLimit + && sOffset == that.sOffset + && Objects.equals(database, that.database) + && op == that.op + && Objects.equals(tagKeyExpr, that.tagKeyExpr) + && Objects.equals(sources, that.sources) + && Objects.equals(condition, that.condition) + && Objects.equals(sortFields, that.sortFields); + } + + @Override + public int hashCode() { + return Objects.hash( + database, + op, + tagKeyExpr, + sources, + condition, + sortFields, + limit, + offset, + sLimit, + sOffset); + } + + public static ShowTagKeysStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_tag_keys_stmt, (c, a) -> a.visitShow_tag_keys_stmt(c), sql); + } + /** {@code ShowTagKeysStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowTagValuesCardinalityStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowTagValuesCardinalityStatement.java index ce99de1..b0824c1 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowTagValuesCardinalityStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowTagValuesCardinalityStatement.java @@ -26,7 +26,10 @@ import io.github.willena.influxql.ast.expr.literal.StringLiteral; import io.github.willena.influxql.ast.source.Sources; import io.github.willena.influxql.ast.token.Operator; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowTagValuesCardinalityStatement implements Statement { private final String database; @@ -97,6 +100,71 @@ public String toString() { return buf.toString(); } + public String getDatabase() { + return database; + } + + public boolean isExact() { + return exact; + } + + public Sources getSources() { + return sources; + } + + public Operator getOp() { + return op; + } + + public Literal getTagKeyExpr() { + return tagKeyExpr; + } + + public Expression getCondition() { + return condition; + } + + public Dimensions getDimensions() { + return dimensions; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowTagValuesCardinalityStatement that = (ShowTagValuesCardinalityStatement) o; + return exact == that.exact + && limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(sources, that.sources) + && op == that.op + && Objects.equals(tagKeyExpr, that.tagKeyExpr) + && Objects.equals(condition, that.condition) + && Objects.equals(dimensions, that.dimensions); + } + + @Override + public int hashCode() { + return Objects.hash( + database, exact, sources, op, tagKeyExpr, condition, dimensions, limit, offset); + } + + public static ShowTagValuesCardinalityStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_tag_values_cardinality_stmt, + (c, a) -> a.visitShow_tag_values_cardinality_stmt(c), + sql); + } + /** {@code ShowTagValuesCardinalityStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowTagValuesStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowTagValuesStatement.java index c15a237..a54124d 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowTagValuesStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowTagValuesStatement.java @@ -26,7 +26,10 @@ import io.github.willena.influxql.ast.field.SortFields; import io.github.willena.influxql.ast.source.Sources; import io.github.willena.influxql.ast.token.Operator; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; import java.util.List; +import java.util.Objects; public class ShowTagValuesStatement implements Statement { private final String database; @@ -91,6 +94,66 @@ public String toString() { return buf.toString(); } + public String getDatabase() { + return database; + } + + public Sources getSources() { + return sources; + } + + public Operator getOperator() { + return operator; + } + + public Literal getTagKeyExpr() { + return tagKeyExpr; + } + + public Expression getCondition() { + return condition; + } + + public SortFields getSortFields() { + return sortFields; + } + + public int getLimit() { + return limit; + } + + public int getOffset() { + return offset; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ShowTagValuesStatement that = (ShowTagValuesStatement) o; + return limit == that.limit + && offset == that.offset + && Objects.equals(database, that.database) + && Objects.equals(sources, that.sources) + && operator == that.operator + && Objects.equals(tagKeyExpr, that.tagKeyExpr) + && Objects.equals(condition, that.condition) + && Objects.equals(sortFields, that.sortFields); + } + + @Override + public int hashCode() { + return Objects.hash( + database, sources, operator, tagKeyExpr, condition, sortFields, limit, offset); + } + + public static ShowTagValuesStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_tag_values_stmt, + (c, a) -> a.visitShow_tag_values_stmt(c), + sql); + } + /** {@code ShowTagValuesStatement} builder static inner class. */ public static final class Builder implements Buildable { private String database; diff --git a/src/main/java/io/github/willena/influxql/ast/statement/ShowUsersStatement.java b/src/main/java/io/github/willena/influxql/ast/statement/ShowUsersStatement.java index f9265ac..9f04af4 100644 --- a/src/main/java/io/github/willena/influxql/ast/statement/ShowUsersStatement.java +++ b/src/main/java/io/github/willena/influxql/ast/statement/ShowUsersStatement.java @@ -18,6 +18,8 @@ package io.github.willena.influxql.ast.statement; import io.github.willena.influxql.ast.Statement; +import io.github.willena.influxql.parser.DefaultParser; +import io.github.willena.influxql.parser.antlr.InfluxqlParser; public class ShowUsersStatement implements Statement { public ShowUsersStatement() {} @@ -26,6 +28,11 @@ public static ShowUsersStatement showUsers() { return new ShowUsersStatement(); } + public static ShowUsersStatement parse(String sql) { + return DefaultParser.parseFrom( + InfluxqlParser::show_users_stmt, (c, a) -> a.visitShow_users_stmt(c), sql); + } + @Override public String toString() { return "SHOW USERS"; diff --git a/src/main/java/io/github/willena/influxql/parser/InfluxqlAstAdapter.java b/src/main/java/io/github/willena/influxql/parser/InfluxqlAstAdapter.java index e9dc5da..689a240 100644 --- a/src/main/java/io/github/willena/influxql/parser/InfluxqlAstAdapter.java +++ b/src/main/java/io/github/willena/influxql/parser/InfluxqlAstAdapter.java @@ -760,7 +760,7 @@ public ShowTagKeysStatement visitShow_tag_keys_stmt( } @Override - public Node visitShow_tag_key_cardinality_stmt( + public ShowTagKeyCardinalityStatement visitShow_tag_key_cardinality_stmt( InfluxqlParser.Show_tag_key_cardinality_stmtContext ctx) { return new ShowTagKeyCardinalityStatement.Builder() .on( diff --git a/src/test/java/io/github/willena/influxql/ast/statement/DeleteStatementTest.java b/src/test/java/io/github/willena/influxql/ast/statement/DeleteStatementTest.java deleted file mode 100644 index cd06ee9..0000000 --- a/src/test/java/io/github/willena/influxql/ast/statement/DeleteStatementTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * InfluxQL Java package - * Copyright 2024 Guillaume VILLENA also known as "Willena" on GitHub - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * 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. - */ - -package io.github.willena.influxql.ast.statement; - -import io.github.willena.influxql.ast.expr.BinaryExpression; -import io.github.willena.influxql.ast.expr.VarRef; -import io.github.willena.influxql.ast.expr.literal.TimestampLiteral; -import io.github.willena.influxql.ast.source.Measurement; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.util.List; -import java.util.regex.Pattern; - -class DeleteStatementTest extends GenericStatementTest { - private static final List> TEST_BODIES = - List.of( - new TestBody.Builder() - .withStatement( - new DeleteStatement.Builder() - .from(Measurement.measurement("cpu"))) - .withExpectedSql("DELETE FROM cpu") - .build(), - new TestBody.Builder() - .withStatement( - new DeleteStatement.Builder() - .from(Measurement.measurement("cpu")) - .where( - BinaryExpression.lt( - VarRef.of("time"), - TimestampLiteral.of( - ZonedDateTime.of( - 2000, - 1, - 1, - 0, - 0, - 0, - 0, - ZoneId.of( - "UTC")) - .toInstant())))) - .withExpectedSql("DELETE FROM cpu WHERE time < '2000-01-01T00:00:00Z'") - .build(), - new TestBody.Builder() - .withStatement( - new DeleteStatement.Builder() - .from(Measurement.measurements(Pattern.compile(".*"))) - .where( - BinaryExpression.lt( - VarRef.of("time"), - TimestampLiteral.of( - ZonedDateTime.of( - 2000, - 1, - 1, - 0, - 0, - 0, - 0, - ZoneId.of( - "UTC")) - .toInstant())))) - .withExpectedSql("DELETE FROM /.*/ WHERE time < '2000-01-01T00:00:00Z'") - .build()); -} diff --git a/src/test/java/io/github/willena/influxql/ast/statement/GrantAdminStatementTest.java b/src/test/java/io/github/willena/influxql/ast/statement/GrantAdminStatementTest.java deleted file mode 100644 index 4f81830..0000000 --- a/src/test/java/io/github/willena/influxql/ast/statement/GrantAdminStatementTest.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * InfluxQL Java package - * Copyright 2024 Guillaume VILLENA also known as "Willena" on GitHub - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * 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. - */ - -package io.github.willena.influxql.ast.statement; - -import java.util.List; - -class GrantAdminStatementTest extends GenericStatementTest { - private static final List> TEST_BODIES = - List.of( - new TestBody.Builder() - .withStatement(new GrantAdminStatement.Builder().to("Usr")) - .withExpectedSql("GRANT ALL PRIVILEGES TO Usr") - .build()); -} diff --git a/src/test/java/io/github/willena/influxql/ast/statement/RevokeAdminStatementTest.java b/src/test/java/io/github/willena/influxql/ast/statement/RevokeAdminStatementTest.java deleted file mode 100644 index d317363..0000000 --- a/src/test/java/io/github/willena/influxql/ast/statement/RevokeAdminStatementTest.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * InfluxQL Java package - * Copyright 2024 Guillaume VILLENA also known as "Willena" on GitHub - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * 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. - */ - -package io.github.willena.influxql.ast.statement; - -import java.util.List; - -class RevokeAdminStatementTest extends GenericStatementTest { - private static final List> TEST_BODIES = - List.of( - new TestBody.Builder() - .withStatement(new RevokeAdminStatement.Builder().from("Usr")) - .withExpectedSql("REVOKE ALL PRIVILEGES FROM Usr") - .build()); -}