Should it be possible to run MAL programs manually, by reading them from a file? I just tried a simple experiment and got an error message.
The experiment: I created a table, "test," with two columns, "field1" and field2." I created a MAL query by issuing the SQL query, "EXPLAIN SELECT * FROM test;" and cut and pasted the output to a file. I then stripped out all of the formatting characters ('|') and extraneous spaces. I then re-entered mclient, choosing the MAL language, and read in the MAL form of the query with "\<
junk.mal." The interpreter then complained that two identifiers were not initialized (see output, below). So, is it not possible to issue a MAL query by hand? Or am I missing something? (Again, please forgive me, I
am new to MonetDB.)
Thanks,
Steve Morgan
mal>\< junk.mal
MAPI = (monetdb) /tmp/.s.monetdb.50000
QUERY = function user.s1_1{autoCommit=true}():void;
barrier X_41 := language.dataflow();
X_2 := sql.mvc();
X_3:bat[:oid,:oid] := sql.tid(X_2,"sys","test");
X_6 := sql.bind(X_2,"sys","test","field1",0);
(X_9,r1_9) := sql.bind(X_2,"sys","test","field1",2);
X_12 :=
sql.bind(X_2,"sys","test","field1",1);
X_14 := sql.delta(X_6,X_9,r1_9,X_12);
X_15 := algebra.leftfetchjoin(X_3,X_14);
X_16 := sql.bind(X_2,"sys","test","field2",0);
(X_18,r1_22) := sql.bind(X_2,"sys","test","field2",2);
X_20 := sql.bind(X_2,"sys","test","field2",1);
X_21 := sql.delta(X_16,X_18,r1_22,X_20);
X_22 := algebra.leftfetchjoin(X_3,X_21);
language.pass(X_3);
exit X_41;
X_23 := sql.resultSet(2,1,X_15);
sql.rsColumn(X_23,"sys.test","field1","int",32,0,X_15);
sql.rsColumn(X_23,"sys.test","field2","int",32,0,X_22);
X_29 := io.stdout();
sql.exportResult(X_29,X_23);
end s1_1;
ERROR = !TypeException:user.s1_1[16]:'X_15' may not be used before being initialized
!TypeException:user.s1_1[17]:'X_15' may not be used before being initialized
!TypeException:user.s1_1[18]:'X_22' may not be used before being initialized