Example: ForeignJava Function Migration

In CCL, the ComputeStream "foreignStream" migrates to a CREATE OUTPUT WINDOW statement, and the Store element migrates to a CREATE MEMORY STORE statement.

In this example, the ComputeStream calls a foreignJava function as ColumnExpression. The foreignJava function migrates to a CREATE LIBRARY statement, and its references in the ColumnExpression migrate to Lib_0.intFunction0( ).

AleriML:

<Store file="store1" id="store1" kind="memory"/> 
  <ComputeStream id="foreignStream" istream="eqInput" store="store1">
    <ColumnExpression key="true" name="a">eqInput.a</ColumnExpression>
    <ColumnExpression key="true" name="b">eqInput.b</ColumnExpression>
    <ColumnExpression key="false" name="intData0">foreignJava(Functions,intFunction0,'()I')</ColumnExpression>
    <ColumnExpression key="false" name="intData1">foreignJava(Functions,intFunction1,'(II)I', 1, 2)</ColumnExpression>
  </ComputeStream>

CCL:

CREATE  MEMORY  STORE store1 PROPERTIES  INDEXTYPE ='tree',  INDEXSIZEHINT =8;
CREATE LIBRARY Lib_0 LANGUAGE Java FROM  'Functions' ( 
INTEGER  intFunction0 (  ); 
);
CREATE LIBRARY Lib_1 LANGUAGE Java FROM  'Functions' ( 
INTEGER  intFunction1 ( INTEGER , INTEGER  ); 
CREATE  OUTPUT  WINDOW foreignStream
SCHEMA (a INTEGER, b STRING, intData0 INTEGER, intData1 INTEGER)
PRIMARY KEY (a, b)
 STORE store1
 AS 
SELECT eqInput.a AS a, eqInput.b AS b, Lib_0.intFunction0( ) AS intData0, Lib_1.intFunction1 (  1, 2) AS intData1
FROM eqInput;