You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafodion.apache.org by "Hans Zeller (JIRA)" <ji...@apache.org> on 2017/02/24 04:16:44 UTC
[jira] [Created] (TRAFODION-2499) TMUDF sometimes does not pass
errors from its input table up to the caller
Hans Zeller created TRAFODION-2499:
--------------------------------------
Summary: TMUDF sometimes does not pass errors from its input table up to the caller
Key: TRAFODION-2499
URL: https://issues.apache.org/jira/browse/TRAFODION-2499
Project: Apache Trafodion
Issue Type: Bug
Components: sql-exe
Affects Versions: 2.0-incubating
Environment: Any
Reporter: Hans Zeller
This only happens in very limited circumstances. In the test case below, we get an error while processing the input table of the UDF. In this case it's a duplicate key error. But, the caller of the UDF gets this error message:
{noformat}
*** ERROR[8810] Executor ran into an internal failure and returned an error without populating the diagnostics area. This error is being injected to indicate that.
Here is the UDF code (file SimpleFunc.java):
import org.trafodion.sql.udr.*;
public class SimpleFunc extends UDR {
// empty constructor
public SimpleFunc() {}
@Override
public void describeParamsAndColumns(UDRInvocationInfo info)
throws UDRException
{
info.out().addLongColumn("ROWS_IN", false);
}
@Override
public void processData(UDRInvocationInfo info,
UDRPlanInfo plan)
throws UDRException
{
long rowCount = 0;
try {
while (getNextRow(info)) {
rowCount++;
} // while processData rows
info.out().setLong(0, rowCount);
emitRow(info);
} // try
catch (Exception ex) {
throw new UDRException (38110, "processData exception: " + ex.getMessage());
}
}
}
Here is how to compile file SimpleFunc.java:
$JAVA_HOME/bin/javac SimpleFunc.java
jar cvf simple_func.jar SimpleFunc.*
Here are the SQL statements:
-- create library
create library simple_func file '..../simple_func.jar';
-- create UDF
drop TABLE_MAPPING FUNCTION simple_func;
CREATE TABLE_MAPPING FUNCTION simple_func()
EXTERNAL NAME 'SimpleFunc'
LIBRARY simple_func
LANGUAGE JAVA
;
drop table tgt;
create table tgt (
pk smallint not null no default,
val varchar(100),
primary key (pk)
)
attributes aligned format
;
insert into tgt values (1,'x');
cqd udr_debug_flags '16';
prepare s from
SELECT *
FROM UDF(simple_func(TABLE(
select pk, val
from (INSERT INTO tgt values ( 1, 'DAVID')) t
)))
;
execute s;
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)