We're Moving!

The Vertica Forum is moving to a new OpenText Analytics Database (Vertica) Community.

Join us there to post discussion topics, learn about

product releases, share tips, access the blog, and much more.

Create My New Community Account Now


Passing 3rd argument in IntermediateAggs — Vertica Forum

Passing 3rd argument in IntermediateAggs

jumanjijumanji
edited November 2018 in General Discussion

Hi,
Based on the

https://www.vertica.com/docs/8.1.x/HTML/index.htm#Authoring/ExtendingVertica/UDx/AggregateFunctions/ExampleAverage.htm?Highlight=IntermediateAggs

I wrote below code.

virtual void initAggregate(ServerInterface &si, IntermediateAggs &aggs)
    {  try{
        VString &arg1 = aggs.getStringRef(0);
        arg1.setNull();

        VString &arg2 = aggs.getStringRef(1);
        arg2.setNull();

        VString &arg3 = aggs.getStringRef(2);
        arg3.setNull();

        }catch(std::exception &e) {
          vt_report_error(0, "Exception while initializing intermediate aggregates: [% s]", e.what());
      }
    }

The problem is I’ll have 3 arguments to pass around between aggregate to combine function instead of 2. I’m getting an exception because of “VString &arg3 = aggs.getStringRef(2);”

error code: 0, message: Exception while initializing intermediate aggregates: [vector::_M_range_check]
LOCATION: initAgg, /scratch_a/release/svrtar4536/vbuild/vertica/EE/Functions/UserDefinedAggregate.cpp:143

My requirement is to pass 3 arguments, how can I do this?

Comments

  • You need to specify the third intermediate in the AggregateFunctionFactory class -

    virtual void getIntermediateTypes(ServerInterface &srvInterface,
    const SizedColumnTypes &inputTypes,
    SizedColumnTypes &intermediateTypeMetaData)
    {
    const VerticaType &inType = inputTypes.getColumnType(0);
    intermediateTypeMetaData.addNumeric(interPrec, inType.getNumericScale());
    intermediateTypeMetaData.addInt();
    // Add your 3rd type here...
    }

  • got the answer we need define it in . the getIntermediateTypes methods

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file