diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/ColumnCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/ColumnCapability.java new file mode 100644 index 000000000..28f3df632 --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/ColumnCapability.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; + +/** + * Capability profile for Column-oriented databases based on the current behavior model. + * + *

In the existing model, column databases introduce basic comparison and + * filtering capabilities beyond simple key-based access. This includes support for range queries, null checks, and + * inclusion-based filtering.

+ * + *

More advanced features such as arithmetic operations, string manipulation, + * sorting, and conditional updates are not assumed to be supported at this level.

+ * + *

Note: Actual support may vary depending on the specific + * implementation (e.g., wide-column vs analytical column stores), but this profile reflects the conservative baseline + * defined in the current TCK behavior.

+ */ +public final class ColumnCapability extends MinimalDatabaseCapability { + + @Override + public boolean capableOfBetween() { + return true; + } + + @Override + public boolean capableOfGreaterThan() { + return true; + } + + @Override + public boolean capableOfGreaterThanEqual() { + return true; + } + + @Override + public boolean capableOfIn() { + return true; + } + + @Override + public boolean capableOfLessThan() { + return true; + } + + @Override + public boolean capableOfLessThanEqual() { + return true; + } + + @Override + public boolean capableOfNotBetween() { + return true; + } + + @Override + public boolean capableOfNotEqual() { + return true; + } + + @Override + public boolean capableOfNotIn() { + return true; + } + + @Override + public boolean capableOfNotNull() { + return true; + } + + @Override + public boolean capableOfNull() { + return true; + } +} \ No newline at end of file diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DatabaseCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DatabaseCapability.java new file mode 100644 index 000000000..d18700089 --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DatabaseCapability.java @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; +/** + * Defines the capability profile of a database family or provider. + * + *

This interface represents what operations and expressions are expected + * to be supported by a given database type. Implementations should document + * nuances such as partial support, vendor-specific behavior, or limitations.

+ * + *

Important: A {@code true} value indicates expected support, + * but does not guarantee uniform behavior across all vendors of the same family.

+ */ +public interface DatabaseCapability { + + boolean capableOfAddition(); + + boolean capableOfAnd(); + + boolean capableOfAssignmentToExpression(); + + boolean capableOfBetween(); + + boolean capableOfAttributeVsAttributeComparison(); + + boolean capableOfConcat(); + + boolean capableOfConditionalDelete(); + + boolean capableOfConditionalUpdate(); + + boolean capableOfConstraintsOnNonIdAttributes(); + + boolean capableOfCount(); + + boolean capableOfCountingDeletes(); + + boolean capableOfCountingUpdates(); + + boolean capableOfDivision(); + + boolean capableOfGreaterThan(); + + boolean capableOfGreaterThanEqual(); + + boolean capableOfIn(); + + boolean capableOfLeft(); + + boolean capableOfLength(); + + boolean capableOfLessThan(); + + boolean capableOfLessThanEqual(); + + boolean capableOfLike(); + + boolean capableOfLower(); + + boolean capableOfMultipleSort(); + + boolean capableOfMultiplication(); + + boolean capableOfNotBetween(); + + boolean capableOfNotEqual(); + + boolean capableOfNotIn(); + + boolean capableOfNotLike(); + + boolean capableOfNotNull(); + + boolean capableOfNull(); + + boolean capableOfOr(); + + boolean capableOfParentheses(); + + boolean capableOfQueryWithoutWhere(); + + boolean capableOfRight(); + + boolean capableOfSingleSort(); + + boolean capableOfSubtraction(); + + boolean capableOfUpper(); +} \ No newline at end of file diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DatabaseType.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DatabaseType.java index b3f493fef..523d101b0 100644 --- a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DatabaseType.java +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DatabaseType.java @@ -22,173 +22,187 @@ * {@link TestProperty} databaseType */ public enum DatabaseType { - OTHER(Integer.MAX_VALUE), //No database type was configured - RELATIONAL(100), - GRAPH(50), - DOCUMENT(40), - TIME_SERIES(30), - COLUMN(20), - KEY_VALUE(10); + OTHER(Integer.MAX_VALUE, new OtherCapability()),// No database type was configured + RELATIONAL(100, new RelationalCapability()), + GRAPH(50, new GraphCapability()), + DOCUMENT(40, new DocumentCapability()), + TIME_SERIES(30, new TimeSeriesCapability()), + COLUMN(20, new ColumnCapability()), + KEY_VALUE(10, new KeyValueCapability()); + + private final int flexibility; + private final DatabaseCapability capability; + + DatabaseType(int flexibility, DatabaseCapability capability) { + this.flexibility = flexibility; + this.capability = capability; + } - private int flexibility; + public int flexibility() { + return flexibility; + } - private DatabaseType(int flexibility) { - this.flexibility = flexibility; + public DatabaseCapability capability() { + return capability; } public boolean capableOfAddition() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfAddition(); } public boolean capableOfAnd() { - return flexibility >= DOCUMENT.flexibility; + return capability.capableOfAnd(); } public boolean capableOfAssignmentToExpression() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfAssignmentToExpression(); } public boolean capableOfBetween() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfBetween(); } public boolean capableOfAttributeVsAttributeComparison() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfAttributeVsAttributeComparison(); } public boolean capableOfConcat() { - return flexibility >= GRAPH.flexibility; + return capability.capableOfConcat(); } public boolean capableOfConditionalDelete() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfConditionalDelete(); } public boolean capableOfConditionalUpdate() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfConditionalUpdate(); } public boolean capableOfConstraintsOnNonIdAttributes() { - return flexibility >= DOCUMENT.flexibility; + return capability.capableOfConstraintsOnNonIdAttributes(); } public boolean capableOfCount() { - return flexibility >= DOCUMENT.flexibility; + return capability.capableOfCount(); } public boolean capableOfCountingDeletes() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfCountingDeletes(); } public boolean capableOfCountingUpdates() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfCountingUpdates(); } public boolean capableOfDivision() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfDivision(); } public boolean capableOfGreaterThan() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfGreaterThan(); } public boolean capableOfGreaterThanEqual() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfGreaterThanEqual(); } public boolean capableOfIn() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfIn(); } public boolean capableOfLeft() { - return flexibility >= GRAPH.flexibility; + return capability.capableOfLeft(); } public boolean capableOfLength() { - return flexibility >= GRAPH.flexibility; + return capability.capableOfLength(); } public boolean capableOfLessThan() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfLessThan(); } public boolean capableOfLessThanEqual() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfLessThanEqual(); } public boolean capableOfLike() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfLike(); } public boolean capableOfLower() { - return flexibility >= GRAPH.flexibility; + return capability.capableOfLower(); } public boolean capableOfMultipleSort() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfMultipleSort(); } public boolean capableOfMultiplication() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfMultiplication(); } - public boolean capableOfNotBetween() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfNotBetween(); } public boolean capableOfNotEqual() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfNotEqual(); } public boolean capableOfNotIn() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfNotIn(); } public boolean capableOfNotLike() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfNotLike(); } public boolean capableOfNotNull() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfNotNull(); } public boolean capableOfNull() { - return flexibility >= COLUMN.flexibility; + return capability.capableOfNull(); } public boolean capableOfOr() { - return flexibility >= DOCUMENT.flexibility; + return capability.capableOfOr(); } public boolean capableOfParentheses() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfParentheses(); } public boolean capableOfQueryWithoutWhere() { - return flexibility >= DOCUMENT.flexibility; + return capability.capableOfQueryWithoutWhere(); } public boolean capableOfRight() { - return flexibility >= GRAPH.flexibility; + return capability.capableOfRight(); } public boolean capableOfSingleSort() { - return flexibility >= DOCUMENT.flexibility; + return capability.capableOfSingleSort(); } public boolean capableOfSubtraction() { - return flexibility >= RELATIONAL.flexibility; + return capability.capableOfSubtraction(); } public boolean capableOfUpper() { - return flexibility >= GRAPH.flexibility; + return capability.capableOfUpper(); } + public static DatabaseType valueOfIgnoreCase(String value) { return Arrays.stream(DatabaseType.values()).filter(type -> type.name().equalsIgnoreCase(value)).findAny().orElse(DatabaseType.OTHER); } + /** + * @deprecated Use explicit capability checks instead. + */ + @Deprecated public boolean isKeywordSupportAtOrBelow(DatabaseType benchmark) { return this.flexibility <= benchmark.flexibility; } diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DocumentCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DocumentCapability.java new file mode 100644 index 000000000..88502019f --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/DocumentCapability.java @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; + +public final class DocumentCapability extends MinimalDatabaseCapability { + + @Override + public boolean capableOfAnd() { + return true; + } + + @Override + public boolean capableOfConstraintsOnNonIdAttributes() { + return true; + } + + @Override + public boolean capableOfCount() { + return true; + } + + @Override + public boolean capableOfOr() { + return true; + } + + @Override + public boolean capableOfQueryWithoutWhere() { + return true; + } + + @Override + public boolean capableOfSingleSort() { + return true; + } + + // Inherited from COLUMN level + + @Override + public boolean capableOfBetween() { + return true; + } + + @Override + public boolean capableOfGreaterThan() { + return true; + } + + @Override + public boolean capableOfGreaterThanEqual() { + return true; + } + + @Override + public boolean capableOfIn() { + return true; + } + + @Override + public boolean capableOfLessThan() { + return true; + } + + @Override + public boolean capableOfLessThanEqual() { + return true; + } + + @Override + public boolean capableOfNotBetween() { + return true; + } + + @Override + public boolean capableOfNotEqual() { + return true; + } + + @Override + public boolean capableOfNotIn() { + return true; + } + + @Override + public boolean capableOfNotNull() { + return true; + } + + @Override + public boolean capableOfNull() { + return true; + } +} \ No newline at end of file diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/GraphCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/GraphCapability.java new file mode 100644 index 000000000..e2de6c901 --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/GraphCapability.java @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; + +public final class GraphCapability extends MinimalDatabaseCapability { + + @Override + public boolean capableOfConcat() { + return true; + } + + @Override + public boolean capableOfLeft() { + return true; + } + + @Override + public boolean capableOfLength() { + return true; + } + + @Override + public boolean capableOfLower() { + return true; + } + + @Override + public boolean capableOfRight() { + return true; + } + + @Override + public boolean capableOfUpper() { + return true; + } + + @Override + public boolean capableOfAnd() { + return true; + } + + @Override + public boolean capableOfConstraintsOnNonIdAttributes() { + return true; + } + + @Override + public boolean capableOfCount() { + return true; + } + + @Override + public boolean capableOfOr() { + return true; + } + + @Override + public boolean capableOfQueryWithoutWhere() { + return true; + } + + @Override + public boolean capableOfSingleSort() { + return true; + } + + @Override + public boolean capableOfBetween() { + return true; + } + + @Override + public boolean capableOfGreaterThan() { + return true; + } + + @Override + public boolean capableOfGreaterThanEqual() { + return true; + } + + @Override + public boolean capableOfIn() { + return true; + } + + @Override + public boolean capableOfLessThan() { + return true; + } + + @Override + public boolean capableOfLessThanEqual() { + return true; + } + + @Override + public boolean capableOfNotBetween() { + return true; + } + + @Override + public boolean capableOfNotEqual() { + return true; + } + + @Override + public boolean capableOfNotIn() { + return true; + } + + @Override + public boolean capableOfNotNull() { + return true; + } + + @Override + public boolean capableOfNull() { + return true; + } +} \ No newline at end of file diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/KeyValueCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/KeyValueCapability.java new file mode 100644 index 000000000..6a4fa2da5 --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/KeyValueCapability.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; + +public final class KeyValueCapability extends MinimalDatabaseCapability { +} \ No newline at end of file diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/MinimalDatabaseCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/MinimalDatabaseCapability.java new file mode 100644 index 000000000..60e9431eb --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/MinimalDatabaseCapability.java @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; + +public abstract class MinimalDatabaseCapability implements DatabaseCapability { + + @Override + public boolean capableOfAddition() { + return false; + } + + @Override + public boolean capableOfAnd() { + return false; + } + + @Override + public boolean capableOfAssignmentToExpression() { + return false; + } + + @Override + public boolean capableOfBetween() { + return false; + } + + @Override + public boolean capableOfAttributeVsAttributeComparison() { + return false; + } + + @Override + public boolean capableOfConcat() { + return false; + } + + @Override + public boolean capableOfConditionalDelete() { + return false; + } + + @Override + public boolean capableOfConditionalUpdate() { + return false; + } + + @Override + public boolean capableOfConstraintsOnNonIdAttributes() { + return false; + } + + @Override + public boolean capableOfCount() { + return false; + } + + @Override + public boolean capableOfCountingDeletes() { + return false; + } + + @Override + public boolean capableOfCountingUpdates() { + return false; + } + + @Override + public boolean capableOfDivision() { + return false; + } + + @Override + public boolean capableOfGreaterThan() { + return false; + } + + @Override + public boolean capableOfGreaterThanEqual() { + return false; + } + + @Override + public boolean capableOfIn() { + return false; + } + + @Override + public boolean capableOfLeft() { + return false; + } + + @Override + public boolean capableOfLength() { + return false; + } + + @Override + public boolean capableOfLessThan() { + return false; + } + + @Override + public boolean capableOfLessThanEqual() { + return false; + } + + @Override + public boolean capableOfLike() { + return false; + } + + @Override + public boolean capableOfLower() { + return false; + } + + @Override + public boolean capableOfMultipleSort() { + return false; + } + + @Override + public boolean capableOfMultiplication() { + return false; + } + + @Override + public boolean capableOfNotBetween() { + return false; + } + + @Override + public boolean capableOfNotEqual() { + return false; + } + + @Override + public boolean capableOfNotIn() { + return false; + } + + @Override + public boolean capableOfNotLike() { + return false; + } + + @Override + public boolean capableOfNotNull() { + return false; + } + + @Override + public boolean capableOfNull() { + return false; + } + + @Override + public boolean capableOfOr() { + return false; + } + + @Override + public boolean capableOfParentheses() { + return false; + } + + @Override + public boolean capableOfQueryWithoutWhere() { + return false; + } + + @Override + public boolean capableOfRight() { + return false; + } + + @Override + public boolean capableOfSingleSort() { + return false; + } + + @Override + public boolean capableOfSubtraction() { + return false; + } + + @Override + public boolean capableOfUpper() { + return false; + } +} \ No newline at end of file diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/OtherCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/OtherCapability.java new file mode 100644 index 000000000..2d22cc908 --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/OtherCapability.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; + +public final class OtherCapability extends RelationalCapability { +} \ No newline at end of file diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/RelationalCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/RelationalCapability.java new file mode 100644 index 000000000..e2376b70c --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/RelationalCapability.java @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; + +public class RelationalCapability implements DatabaseCapability { + + @Override + public boolean capableOfAddition() { + return true; + } + + @Override + public boolean capableOfAnd() { + return true; + } + + @Override + public boolean capableOfAssignmentToExpression() { + return true; + } + + @Override + public boolean capableOfBetween() { + return true; + } + + @Override + public boolean capableOfAttributeVsAttributeComparison() { + return true; + } + + @Override + public boolean capableOfConcat() { + return true; + } + + @Override + public boolean capableOfConditionalDelete() { + return true; + } + + @Override + public boolean capableOfConditionalUpdate() { + return true; + } + + @Override + public boolean capableOfConstraintsOnNonIdAttributes() { + return true; + } + + @Override + public boolean capableOfCount() { + return true; + } + + @Override + public boolean capableOfCountingDeletes() { + return true; + } + + @Override + public boolean capableOfCountingUpdates() { + return true; + } + + @Override + public boolean capableOfDivision() { + return true; + } + + @Override + public boolean capableOfGreaterThan() { + return true; + } + + @Override + public boolean capableOfGreaterThanEqual() { + return true; + } + + @Override + public boolean capableOfIn() { + return true; + } + + @Override + public boolean capableOfLeft() { + return true; + } + + @Override + public boolean capableOfLength() { + return true; + } + + @Override + public boolean capableOfLessThan() { + return true; + } + + @Override + public boolean capableOfLessThanEqual() { + return true; + } + + @Override + public boolean capableOfLike() { + return true; + } + + @Override + public boolean capableOfLower() { + return true; + } + + @Override + public boolean capableOfMultipleSort() { + return true; + } + + @Override + public boolean capableOfMultiplication() { + return true; + } + + @Override + public boolean capableOfNotBetween() { + return true; + } + + @Override + public boolean capableOfNotEqual() { + return true; + } + + @Override + public boolean capableOfNotIn() { + return true; + } + + @Override + public boolean capableOfNotLike() { + return true; + } + + @Override + public boolean capableOfNotNull() { + return true; + } + + @Override + public boolean capableOfNull() { + return true; + } + + @Override + public boolean capableOfOr() { + return true; + } + + @Override + public boolean capableOfParentheses() { + return true; + } + + @Override + public boolean capableOfQueryWithoutWhere() { + return true; + } + + @Override + public boolean capableOfRight() { + return true; + } + + @Override + public boolean capableOfSingleSort() { + return true; + } + + @Override + public boolean capableOfSubtraction() { + return true; + } + + @Override + public boolean capableOfUpper() { + return true; + } +} \ No newline at end of file diff --git a/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/TimeSeriesCapability.java b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/TimeSeriesCapability.java new file mode 100644 index 000000000..9edbef545 --- /dev/null +++ b/tck/src/main/java/ee/jakarta/tck/data/framework/utilities/TimeSeriesCapability.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package ee.jakarta.tck.data.framework.utilities; + +public final class TimeSeriesCapability extends MinimalDatabaseCapability { + + @Override + public boolean capableOfBetween() { + return true; + } + + @Override + public boolean capableOfGreaterThan() { + return true; + } + + @Override + public boolean capableOfGreaterThanEqual() { + return true; + } + + @Override + public boolean capableOfIn() { + return true; + } + + @Override + public boolean capableOfLessThan() { + return true; + } + + @Override + public boolean capableOfLessThanEqual() { + return true; + } + + @Override + public boolean capableOfNotBetween() { + return true; + } + + @Override + public boolean capableOfNotEqual() { + return true; + } + + @Override + public boolean capableOfNotIn() { + return true; + } + + @Override + public boolean capableOfNotNull() { + return true; + } + + @Override + public boolean capableOfNull() { + return true; + } +} \ No newline at end of file