Clone
Hans Zeller <hans.zeller@hp.com>
committed
on 11 Feb 15
C++ run-time interface for TMUDFs
blueprint cmp-tmudf-compile-time-interface

- Support for C++ run-time interface:
- A new language, C++ … Show more
C++ run-time interface for TMUDFs

blueprint cmp-tmudf-compile-time-interface

- Support for C++ run-time interface:

 - A new language, C++ is added to langman, the existing

   LanguageManagerC handles both C and C++

 - Two new parameter styles got added, C++ and Java

   object-oriented parameter styles. Routines written in C++

   use the new object-oriented C++ parameter style. The compiler

   interface is only supported for that style (and in the future

   for the Java object-oriented style).

 - Also added one more compile time interface, the "completeDescription()"

   call in the generator. Added logic to extract the UDRPlanInfo of

   the optimal plan.

- Changes to UDRInvocationInfo and UDRPlanInfo classes:

 - UDRInvocationInfo and UDRPlanInfo objects can now be serialized

   and they are added to generated plans, as part of the UDR TDB.

 - Split TableInfo into TupleInfo and TableInfo classes. TupleInfo

   is now the common base class for describing both parameters and

   input/output tables.

 - TypeInfo now has offsets for data, null indicator and varchar

   indicator.

 - New get<type> and set<type> methods on class TupleInfo, to be

   used at compile time for parameters and at runtime for parameters,

   input and output tables.

 - Added a "call phase" member, to be able to throw exceptions when

   certain methods are called at the wrong time (e.g. trying to modify

   compile time members at runtime).

- Routine class in langman now has a new subclass, LmRoutineCppObj

 and a new method, invokeRoutineMethod, that is used to invoke

 the object-oriented methods, requiring UDRInvocationInfo and

 UDRPlanInfo as parameters.

- Fixed some executor issues with error handling for UDFs, this is

 still not very well supported

- Emitting the EOD row in the UDF is no longer required, and no longer

 supported or even possible.

- UDRPlanInfo is now part of the physical properties, so that we

 can extract it from the optimal plan.

- Disabling TMUDF as the inner of a nested join - for now.

 We might support this "routine join" at a later time.

- regress/udr/TEST001:

 - SESSIONIZE_STATIC remains in C, but other TMUDFs are now

   rewritten in C++ (the runtime part that was not yet in C++)

 - SESSIONIZE_DYNAMIC is now the same as the example on the wiki

- regress/udr/TEST002: Added some tests for event log reader UDF,

 but can't add the part that copies a sample log file, since

 in Jenkins, we don't have $MY_SQROOT set. Tried the test on my

 workstation, though. Steve tells me $MY_SQROOT should be available,

 so in a future checkin I'll enable this code again.

- For patch set 2: Removed fix for LP bug 1420539 and addressed

 other review comments.

Change-Id: I008ad68a8f25f1aaee94e1c45bbf097a267129bb

Show less

default + 9 more