bug 1430034 TMUDF: processData() fails to handle several data type bug 1430438 TMUDF: A TMUDF with nonexisting external name crashes sqlci with a core bug 1430453 TMUDF: A TMUDF missing 'language cpp' crashes sqlci with a core bug 1430484 TMUDF: User defined error number for UDRException() not returned at run time bug 1404053 Core with SIGSEGV during CREATE PROCEDURE statement when procedure validation fails
Summary of changes:
- Support for more data types, including char types with character set UCS2 and interval types. Unlike in other types of UDFs, intervals are represented as integers, but that representation is not directly exposed to the UDF writer. CLOBs and BLOBs are only supported when they are mapped to VARCHARS. - Support to get and set values by specifying a C++ data type of time_t for datetime and certain interval values. - The default language for creating UDFs is changing. It used to be C, the new rule depends on the type of the library. If we can determine the library to be a jar file, the default language is Java. For other libraries, the default is C for scalar UDFs, C++ for table-valued UDFs. Also the PARAMETER STYLE clause is no longer used for TMUDFs, the parameter style is computed automatically for now. PARAMETER STYLE is now optional for Java stored procedures. - Error handling is somewhat improved, fewer internal errors occur when a UDR raises an exception. Still needs work. - Making interfaces of OrderInfo and PartitionInfo more similar by giving them similar methods.
repository upgrade and explain enhancements. Details below. -- repository upgrade infrastructure integrated with 'initialize trafodion, upgrade' -- fields have been added/removed/modified in repos tables -- new repos table has been added
-- upgrade enhanced to only upgrade subset of components that need to be upgraded. One or more of metadata, repos, views, priv.
-- metadata version now tracks release version and indicates the traf release where upgrade was needed. Current metadata version will be 1.1.0.
-- packed explain data is now returned to caller so it could be stored in repository -- explain info from repository for a query id could be retrieved and displayed explain qid <query-id>; explain options 'f' qid <query-id> select * from table(explain(null, 'EXPLAIN_QID=<query-id>'));
-- a sql query could be explained and returned in relational format. select * from table(explain(null, 'EXPLAIN_STMT=<query-str>)); Users only need to have select permission on tables referenced in query-str.
-- explain and statistics tables could be invoked invoke table(explain(null, null)); invoke table(statistics(null, null));