Uploaded image for project: 'IMPALA'
  1. IMPALA
  2. IMPALA-4878

FunctionContext::GetIntermediateType() is not implemented

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: Impala 2.9.0
    • Fix Version/s: Impala 2.9.0
    • Component/s: Backend
    • Labels:
      None

      Description

      Any UDA that tries to call GetIntermediateType() will fail with this error:

      E   ImpalaBeeswaxException: ImpalaBeeswaxException:
      E    INNER EXCEPTION: <class 'beeswaxd.ttypes.BeeswaxException'>
      E    MESSAGE: AnalysisException: Could not load binary: /test-warehouse/libTestUdas.so
      E   Unable to load /tmp/libTestUdas.26930.8.so
      E   dlerror: /tmp/libTestUdas.26930.8.so: undefined symbol: _ZNK10impala_udf15FunctionContext19GetIntermediateTypeEv
      

        Activity

        Hide
        tarmstrong Tim Armstrong added a comment -

        IMPALA-1430,IMPALA-4878,IMPALA-4879: codegen native UDAs

        This uses the existing infrastructure for codegening builtin UDAs and
        for codegening calls to UDFs. GetUdf() is refactored to support both
        UDFs and UDAs.

        IR UDAs are still not allowed by the frontend. It's unclear if we want
        to enable them going forward because of the difficulties in testing and
        supporting IR UDFs/UDAs.

        This also fixes some bugs with the Get*Type() methods of
        FunctionContext. GetArgType() and related methods now always return the
        logical input types of the aggregate function. Getting the tests to pass
        required fixing IMPALA-4878 because they called GetIntermediateType().

        Testing:
        test_udfs.py tests UDAs with codegen enabled and disabled.

        Added some asserts to test UDAs to check that the correct types are
        passed in via the FunctionContext.

        Change-Id: Id1708eaa96eb76fb9bec5eeabf209f81c88eec2f
        Reviewed-on: http://gerrit.cloudera.org:8080/5161
        Reviewed-by: Dan Hecht <dhecht@cloudera.com>
        Tested-by: Impala Public Jenkins

        Show
        tarmstrong Tim Armstrong added a comment - IMPALA-1430 , IMPALA-4878 , IMPALA-4879 : codegen native UDAs This uses the existing infrastructure for codegening builtin UDAs and for codegening calls to UDFs. GetUdf() is refactored to support both UDFs and UDAs. IR UDAs are still not allowed by the frontend. It's unclear if we want to enable them going forward because of the difficulties in testing and supporting IR UDFs/UDAs. This also fixes some bugs with the Get*Type() methods of FunctionContext. GetArgType() and related methods now always return the logical input types of the aggregate function. Getting the tests to pass required fixing IMPALA-4878 because they called GetIntermediateType(). Testing: test_udfs.py tests UDAs with codegen enabled and disabled. Added some asserts to test UDAs to check that the correct types are passed in via the FunctionContext. Change-Id: Id1708eaa96eb76fb9bec5eeabf209f81c88eec2f Reviewed-on: http://gerrit.cloudera.org:8080/5161 Reviewed-by: Dan Hecht <dhecht@cloudera.com> Tested-by: Impala Public Jenkins

          People

          • Assignee:
            tarmstrong Tim Armstrong
            Reporter:
            tarmstrong Tim Armstrong
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development