Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.0.0-incubating
    • Fix Version/s: 1.1.0-incubating
    • Component/s: None
    • Labels:
      None

      Description

      Project.flags has no meaning under current code base.

      It need to be removed with Project.Flags class

        Issue Links

          Activity

          Hide
          julianhyde Julian Hyde added a comment -

          Closing now that 1.1.0-incubating has been released.

          Show
          julianhyde Julian Hyde added a comment - Closing now that 1.1.0-incubating has been released.
          Hide
          julianhyde Julian Hyde added a comment -

          Is there a way to tell this tool which APIs are stable and public? Quite a lot of our code is experimental. It's in no one's interests to keep experimental code until the next major release.

          How much overhead do you think think this tool would add to our process?

          Did you see https://github.com/julianhyde/incubator-calcite/commit/9bd3ba36edf776a1b0a3b7798c6927f5dc1d9408?

          Show
          julianhyde Julian Hyde added a comment - Is there a way to tell this tool which APIs are stable and public? Quite a lot of our code is experimental. It's in no one's interests to keep experimental code until the next major release. How much overhead do you think think this tool would add to our process? Did you see https://github.com/julianhyde/incubator-calcite/commit/9bd3ba36edf776a1b0a3b7798c6927f5dc1d9408?
          Hide
          vladimirsitnikov Vladimir Sitnikov added a comment -

          I've just tried a plugin to check backward compatibility (the first link on Google), and the results are not that good.

          Should we include some kind of automatic testing of backward compatibility in our build system?

          [INFO] Checking backward compatibility of org.apache.calcite:calcite-core:jar:1.1.0-incubating-SNAPSHOT against org.apache.calcite:calcite-core:jar:1.0.0-incubating:compile
          [ERROR] org/apache/calcite/adapter/enumerable/EnumerableCalc.java: Could not find method copy in newer version.
          [ERROR] org/apache/calcite/adapter/enumerable/EnumerableCalc.java: Could not find method copy in newer version.
          [ERROR] org/apache/calcite/rel/logical/LogicalCalc.java: Could not find method copy in newer version.
          [ERROR] org/apache/calcite/rel/logical/LogicalCalc.java: Could not find method copy in newer version.
          [ERROR] org/apache/calcite/schema/Statistics.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/rel/RelCollation.java: org/apache/calcite/rel/RelCollation is not implementing org/apache/calcite/plan/RelTrait anymore.
          [ERROR] org/apache/calcite/rel/logical/LogicalIntersect.java: Could not find field $assertionsDisabled in newer version.
          [ERROR] org/apache/calcite/rel/logical/LogicalIntersect.java: Could not find method <clinit> in newer version.
          [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find method access$100 in newer version.
          [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find field $SwitchMap$org$apache$calcite$rel$RelFieldCollation$NullDirection in newer version.
          [ERROR] org/apache/calcite/plan/RelTraitSet.java: Could not find method subsumes in newer version.
          [ERROR] org/apache/calcite/rel/core/Project.java: Could not find field flags in newer version.
          [ERROR] org/apache/calcite/rel/core/Project.java: Could not find field collationList in newer version.
          [ERROR] org/apache/calcite/rel/core/Project.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/rel/core/Project.java: Could not find method getCollationList in newer version.
          [ERROR] org/apache/calcite/rel/core/Project.java: Could not find method isBoxed in newer version.
          [ERROR] org/apache/calcite/rel/core/Project.java: Could not find method getFlags in newer version.
          [ERROR] org/apache/calcite/adapter/enumerable/EnumerableProject.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find field val$fieldCollation in newer version.
          [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find field val$fieldCollation in newer version.
          [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/prepare/Prepare.java: Could not find method optimize in newer version.
          [ERROR] org/apache/calcite/interpreter/BindableConvention.java: Could not find method subsumes in newer version.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: org/apache/calcite/plan/RelOptUtil$11 extends java/util/AbstractList and not java/lang/Object anymore.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find field $SwitchMap$org$apache$calcite$plan$RelOptUtil$Logic in newer version.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find field $SwitchMap$org$apache$calcite$plan$RelOptUtil$SubqueryType in newer version.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find field $SwitchMap$org$apache$calcite$sql$SqlKind in newer version.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find method <clinit> in newer version.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: The class org/apache/calcite/plan/RelOptUtil$11 has been made final, this breaks inheritance.
          [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find field flags in newer version.
          [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/rex/RexProgram.java: Could not find method apply in newer version.
          [ERROR] org/apache/calcite/rel/logical/LogicalProject.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/rel/logical/LogicalProject.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/adapter/enumerable/EnumerableConvention.java: Could not find method subsumes in newer version.
          [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find method copy in newer version.
          [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find method copy in newer version.
          [ERROR] org/apache/calcite/plan/RelTrait.java: Could not find method subsumes in newer version.
          [ERROR] org/apache/calcite/rel/core/Calc.java: Could not find method getCollationList in newer version.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find method get in newer version.
          [ERROR] org/apache/calcite/adapter/enumerable/EnumerableValues.java(51): The visibility of the <init> method has been changed from NO_SCOPE to PRIVATE
          [ERROR] org/apache/calcite/rel/core/Project.java: Public class org/apache/calcite/rel/core/Project$Flags has been removed.
          [ERROR] org/apache/calcite/interpreter/Bindables.java: Could not find method <init> in newer version.
          [ERROR] org/apache/calcite/rel/core/Sort.java: The class org/apache/calcite/rel/core/Sort has been made abstract.
          [ERROR] org/apache/calcite/rel/core/Sort.java(122): The method copy has been made final, this now prevents overriding.
          [ERROR] org/apache/calcite/rel/core/Sort.java(127): The method copy has been made final, this now prevents overriding.
          [ERROR] org/apache/calcite/adapter/clone/ArrayTable.java: Could not find method access$200 in newer version.
          [ERROR] org/apache/calcite/adapter/clone/ArrayTable.java: Could not find method access$300 in newer version.
          [ERROR] org/apache/calcite/interpreter/InterpretableConvention.java: Could not find method subsumes in newer version.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find method classifyFilters in newer version.
          [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find method project in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find field EMPTY in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find field PRESERVE in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find field $assertionsDisabled in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method of in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method of in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method subsumes in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method createSingleton in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method isValid in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method equal in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method ordinals in newer version.
          [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method <clinit> in newer version.
          [ERROR] org/apache/calcite/plan/Convention.java: Could not find method subsumes in newer version.
          [ERROR] org/apache/calcite/plan/RelOptCluster.java: Could not find method traitSetOf in newer version.
          [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find method <init> in newer version.
          [ERROR] You have 66 backward compatibility issues.
          
          <plugin>
            <groupId>com.googlecode.japi-checker</groupId>
            <artifactId>japi-checker-maven-plugin</artifactId>
            <version>0.1.4</version> <!-- The check is still in development at the moment so snapshot is the only way to get it. -->
            <configuration>
              <reference>
                <!-- Replace here with the reference artifact of your project. -->
                <groupId>${project.groupId}</groupId>
                <artifactId>${project.artifactId}</artifactId>
                <version>1.0.0-incubating</version>
              </reference>
              <rules>
                <rule>com.googlecode.japi.checker.rules.AllRules</rule>
              </rules>
            </configuration>
            <executions>
              <execution>
                <id>check-bc</id> <!-- this is used for inheritance merges -->
                <phase>verify</phase> <!-- bind to the packaging phase -->
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          
          Show
          vladimirsitnikov Vladimir Sitnikov added a comment - I've just tried a plugin to check backward compatibility (the first link on Google), and the results are not that good. Should we include some kind of automatic testing of backward compatibility in our build system? [INFO] Checking backward compatibility of org.apache.calcite:calcite-core:jar:1.1.0-incubating-SNAPSHOT against org.apache.calcite:calcite-core:jar:1.0.0-incubating:compile [ERROR] org/apache/calcite/adapter/enumerable/EnumerableCalc.java: Could not find method copy in newer version. [ERROR] org/apache/calcite/adapter/enumerable/EnumerableCalc.java: Could not find method copy in newer version. [ERROR] org/apache/calcite/rel/logical/LogicalCalc.java: Could not find method copy in newer version. [ERROR] org/apache/calcite/rel/logical/LogicalCalc.java: Could not find method copy in newer version. [ERROR] org/apache/calcite/schema/Statistics.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/rel/RelCollation.java: org/apache/calcite/rel/RelCollation is not implementing org/apache/calcite/plan/RelTrait anymore. [ERROR] org/apache/calcite/rel/logical/LogicalIntersect.java: Could not find field $assertionsDisabled in newer version. [ERROR] org/apache/calcite/rel/logical/LogicalIntersect.java: Could not find method <clinit> in newer version. [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find method access$100 in newer version. [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find field $SwitchMap$org$apache$calcite$rel$RelFieldCollation$NullDirection in newer version. [ERROR] org/apache/calcite/plan/RelTraitSet.java: Could not find method subsumes in newer version. [ERROR] org/apache/calcite/rel/core/Project.java: Could not find field flags in newer version. [ERROR] org/apache/calcite/rel/core/Project.java: Could not find field collationList in newer version. [ERROR] org/apache/calcite/rel/core/Project.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/rel/core/Project.java: Could not find method getCollationList in newer version. [ERROR] org/apache/calcite/rel/core/Project.java: Could not find method isBoxed in newer version. [ERROR] org/apache/calcite/rel/core/Project.java: Could not find method getFlags in newer version. [ERROR] org/apache/calcite/adapter/enumerable/EnumerableProject.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find field val$fieldCollation in newer version. [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find field val$fieldCollation in newer version. [ERROR] org/apache/calcite/interpreter/SortNode.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/prepare/Prepare.java: Could not find method optimize in newer version. [ERROR] org/apache/calcite/interpreter/BindableConvention.java: Could not find method subsumes in newer version. [ERROR] org/apache/calcite/plan/RelOptUtil.java: org/apache/calcite/plan/RelOptUtil$11 extends java/util/AbstractList and not java/lang/Object anymore. [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find field $SwitchMap$org$apache$calcite$plan$RelOptUtil$Logic in newer version. [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find field $SwitchMap$org$apache$calcite$plan$RelOptUtil$SubqueryType in newer version. [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find field $SwitchMap$org$apache$calcite$sql$SqlKind in newer version. [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find method <clinit> in newer version. [ERROR] org/apache/calcite/plan/RelOptUtil.java: The class org/apache/calcite/plan/RelOptUtil$11 has been made final, this breaks inheritance. [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find field flags in newer version. [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/rex/RexProgram.java: Could not find method apply in newer version. [ERROR] org/apache/calcite/rel/logical/LogicalProject.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/rel/logical/LogicalProject.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/adapter/enumerable/EnumerableConvention.java: Could not find method subsumes in newer version. [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find method copy in newer version. [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find method copy in newer version. [ERROR] org/apache/calcite/plan/RelTrait.java: Could not find method subsumes in newer version. [ERROR] org/apache/calcite/rel/core/Calc.java: Could not find method getCollationList in newer version. [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find method get in newer version. [ERROR] org/apache/calcite/adapter/enumerable/EnumerableValues.java(51): The visibility of the <init> method has been changed from NO_SCOPE to PRIVATE [ERROR] org/apache/calcite/rel/core/Project.java: Public class org/apache/calcite/rel/core/Project$Flags has been removed. [ERROR] org/apache/calcite/interpreter/Bindables.java: Could not find method <init> in newer version. [ERROR] org/apache/calcite/rel/core/Sort.java: The class org/apache/calcite/rel/core/Sort has been made abstract. [ERROR] org/apache/calcite/rel/core/Sort.java(122): The method copy has been made final, this now prevents overriding. [ERROR] org/apache/calcite/rel/core/Sort.java(127): The method copy has been made final, this now prevents overriding. [ERROR] org/apache/calcite/adapter/clone/ArrayTable.java: Could not find method access$200 in newer version. [ERROR] org/apache/calcite/adapter/clone/ArrayTable.java: Could not find method access$300 in newer version. [ERROR] org/apache/calcite/interpreter/InterpretableConvention.java: Could not find method subsumes in newer version. [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find method classifyFilters in newer version. [ERROR] org/apache/calcite/plan/RelOptUtil.java: Could not find method project in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find field EMPTY in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find field PRESERVE in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find field $assertionsDisabled in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method of in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method of in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method subsumes in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method createSingleton in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method isValid in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method equal in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method ordinals in newer version. [ERROR] org/apache/calcite/rel/RelCollationImpl.java: Could not find method <clinit> in newer version. [ERROR] org/apache/calcite/plan/Convention.java: Could not find method subsumes in newer version. [ERROR] org/apache/calcite/plan/RelOptCluster.java: Could not find method traitSetOf in newer version. [ERROR] org/apache/calcite/adapter/jdbc/JdbcRules.java: Could not find method <init> in newer version. [ERROR] You have 66 backward compatibility issues. <plugin> <groupId> com.googlecode.japi-checker </groupId> <artifactId> japi-checker-maven-plugin </artifactId> <version> 0.1.4 </version> <!-- The check is still in development at the moment so snapshot is the only way to get it. --> <configuration> <reference> <!-- Replace here with the reference artifact of your project. --> <groupId> ${project.groupId} </groupId> <artifactId> ${project.artifactId} </artifactId> <version> 1.0.0-incubating </version> </reference> <rules> <rule> com.googlecode.japi.checker.rules.AllRules </rule> </rules> </configuration> <executions> <execution> <id> check-bc </id> <!-- this is used for inheritance merges --> <phase> verify </phase> <!-- bind to the packaging phase --> <goals> <goal> check </goal> </goals> </execution> </executions> </plugin>
          Hide
          julianhyde Julian Hyde added a comment -

          I agree that we should not be removing arguments in a minor release. But also, I don't want our next release (in a month or so) to be called 2.0. So I propose to add overloaded constructors that have a flags parameter. They would be deprecated (marked '@Deprecated // to be removed before 2.0') and would ignore the parameter.

          What do you think?

          Show
          julianhyde Julian Hyde added a comment - I agree that we should not be removing arguments in a minor release. But also, I don't want our next release (in a month or so) to be called 2.0. So I propose to add overloaded constructors that have a flags parameter. They would be deprecated (marked '@Deprecated // to be removed before 2.0') and would ignore the parameter. What do you think?
          Hide
          vladimirsitnikov Vladimir Sitnikov added a comment -

          Do you target it to a 1.1.0 or 2.0.0?

          Not sure how crude we are going to be, but formally, removing argument from a public constructor is not backward-compatible.

          Show
          vladimirsitnikov Vladimir Sitnikov added a comment - Do you target it to a 1.1.0 or 2.0.0? Not sure how crude we are going to be, but formally, removing argument from a public constructor is not backward-compatible.
          Show
          julianhyde Julian Hyde added a comment - Fixed in http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/5a6d32a2 .
          Hide
          julianhyde Julian Hyde added a comment -

          Combining this with the fix for CALCITE-526. One involves removing the flags arg to Project constructor and the other involves removing the RelCollation arg.

          Show
          julianhyde Julian Hyde added a comment - Combining this with the fix for CALCITE-526 . One involves removing the flags arg to Project constructor and the other involves removing the RelCollation arg.
          Show
          vladimirsitnikov Vladimir Sitnikov added a comment - Please review https://github.com/apache/incubator-calcite/pull/45

            People

            • Assignee:
              julianhyde Julian Hyde
              Reporter:
              vladimirsitnikov Vladimir Sitnikov
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development