org.apache.calcite.util.Bug Maven / Gradle / Ivy
Show all versions of calcite-core Show documentation
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you 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 org.apache.calcite.util;
/**
* Holder for a list of constants describing which bugs which have not been
* fixed.
*
* You can use these constants to control the flow of your code. For example,
* suppose that bug CALCITE-123 causes the "INSERT" statement to return an
* incorrect row-count, and you want to disable unit tests. You might use the
* constant in your code as follows:
*
*
* Statement stmt = connection.createStatement();
* int rowCount = stmt.execute(
* "INSERT INTO FemaleEmps SELECT * FROM Emps WHERE gender = 'F'");
* if (Bug.CALCITE_123_FIXED) {
* assertEquals(rowCount, 5);
* }
*
*
* The usage of the constant is a convenient way to identify the impact of
* the bug. When someone fixes the bug, they will remove the constant and all
* usages of it. Also, the constant helps track the propagation of the fix: as
* the fix is integrated into other branches, the constant will be removed from
* those branches.
*
* To do
*
* The following is a list of tasks to be completed before committing to
* master branch.
*
*
*
*/
public abstract class Bug {
//~ Static fields/initializers ---------------------------------------------
// -----------------------------------------------------------------------
// Developers should create new fields here, in their own section. This
// will make merge conflicts much less likely than if everyone is
// appending.
public static final boolean DT239_FIXED = false;
public static final boolean DT785_FIXED = false;
// jhyde
/**
* Whether issue
* Fnl-3 is fixed.
*/
public static final boolean FNL3_FIXED = false;
/**
* Whether issue
* FRG-327: AssertionError while translating IN list that contains null
* is fixed.
*/
public static final boolean FRG327_FIXED = false;
/**
* Whether issue
* FRG-377: Regular character set identifiers defined in SQL:2008 spec like
* :ALPHA:, * :UPPER:, :LOWER:, ... etc. are not yet implemented in
* SIMILAR TO expressions. is fixed.
*/
public static final boolean FRG377_FIXED = false;
/**
* Whether dtbug1684 "CURRENT_DATE not implemented in fennel calc" is fixed.
*/
public static final boolean DT1684_FIXED = false;
/**
* Whether issue
* FNL-25 is fixed. (also filed as dtbug 153)
*/
public static final boolean FNL25_FIXED = false;
/**
* Whether issue FRG-73:
* miscellaneous bugs with nested comments is fixed.
*/
public static final boolean FRG73_FIXED = false;
/**
* Whether issue FRG-78:
* collation clause should be on expression instead of identifier is
* fixed.
*/
public static final boolean FRG78_FIXED = false;
/**
* Whether issue
* FRG-189: FarragoAutoVmOperatorTest.testSelect fails is fixed.
*/
public static final boolean FRG189_FIXED = false;
/**
* Whether issue
* FRG-254: environment-dependent failure for
* SqlOperatorTest.testPrefixPlusOperator is fixed.
*/
public static final boolean FRG254_FIXED = false;
/**
* Whether issue
* FRG-282: Support precision in TIME and TIMESTAMP data types is fixed.
*/
public static final boolean FRG282_FIXED = false;
/**
* Whether issue
* FRG-296: SUBSTRING(string FROM regexp FOR regexp) is fixed.
*/
public static final boolean FRG296_FIXED = false;
/**
* Whether issue
* FRG-375: The expression VALUES ('cd' SIMILAR TO '[a-e^c]d') returns TRUE.
* It should return FALSE. is fixed.
*/
public static final boolean FRG375_FIXED = false;
/** Whether
* [CALCITE-194]
* Array items in MongoDB adapter is fixed. */
public static final boolean CALCITE_194_FIXED = false;
/** Whether the remaining issues raised in
* [CALCITE-461]
* Convert more planner rules to handle grouping sets are fixed.
*
* Now that [CALCITE-461] is fixed, the tracking bug is
* [CALCITE-574]
* Remove org.apache.calcite.util.Bug.CALCITE_461_FIXED. */
public static final boolean CALCITE_461_FIXED = false;
/** Whether
* [CALCITE-673]
* Timeout executing joins against MySQL is fixed. */
public static final boolean CALCITE_673_FIXED = false;
/** Whether
* [CALCITE-1048]
* Make metadata more robust is fixed. */
public static final boolean CALCITE_1048_FIXED = false;
/** Whether
* [CALCITE-1045]
* Decorrelate sub-queries in Project and Join is fixed. */
public static final boolean CALCITE_1045_FIXED = false;
/** Whether
* [CALCITE-2400]
* Allow standards-compliant column ordering for NATURAL JOIN and JOIN USING
* when dynamic tables are used is fixed. */
public static final boolean CALCITE_2400_FIXED = false;
/** Whether
* [CALCITE-2401]
* Improve RelMdPredicates performance
*/
public static final boolean CALCITE_2401_FIXED = false;
/**
* Use this to flag temporary code.
*/
public static final boolean TODO_FIXED = false;
/**
* Use this method to flag temporary code.
*
*
Example #1:
*
* if (Bug.remark("baz fixed") == null) {
* baz();
* }
*
* Example #2:
*
* /** @see Bug#remark Remove before checking in */
* void uselessMethod() {}
*
*/
public static T remark(T remark) {
return remark;
}
/**
* Use this method to flag code that should be re-visited after upgrading
* a component.
*
* If the intended change is that a class or member be removed, flag
* instead using a {@link Deprecated} annotation followed by a comment such as
* "to be removed before 2.0".
*/
public static boolean upgrade(String remark) {
Util.discard(remark);
return false;
}
}
// End Bug.java