Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-4409

Improve exception when RelBuilder tries to create a field on a non-struct expression

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      A simple test like this (to added in RelBuilderTest), where RelBuilder#field(RexNode e, String name) is called and the first parameter's type is not a struct:

        @Test void test() {
          final RelBuilder builder = RelBuilder.create(config().build());
          builder.scan("EMP")
              .project(
                  builder.field(builder.field("EMPNO"), "abc"))
              .build();
        }
      

      Fails with a NPE:

      java.lang.NullPointerException
      	at org.apache.calcite.rel.type.RelDataTypeImpl.getField(RelDataTypeImpl.java:82)
      	at org.apache.calcite.rex.RexBuilder.makeFieldAccess(RexBuilder.java:182)
      	at org.apache.calcite.tools.RelBuilder.field(RelBuilder.java:502)
      

      This situation could be handled with a more gracefully exit (IllegalArgumentException) and a more useful exception message.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            rubenql Ruben Q L
            rubenql Ruben Q L
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 7h 20m
                7h 20m

                Slack

                  Issue deployment