The work on SQL/PSM compiler started
There are a basic code for plpsm language implementation. It's downloadable from github. Now only basic statements are supported - see a test.sql file.
pavel=# create or replace function test12(a int)
returns int as $$
begin
declare b,c,d int default 0;
set b = a + 1, c = b + 1, d = c + 1;
return d;
end;
$$ language psm0;
NOTICE:
Datums: 4 variables
Size: 16 instruction
0 CopyParam 0, 0, size:4, byval:BYVAL
1 ExecExpr "SELECT (0)::integer",{}
2 SaveTo 1, size:4, byval:BYVAL
3 ExecExpr "SELECT (0)::integer",{}
4 SaveTo 2, size:4, byval:BYVAL
5 ExecExpr "SELECT (0)::integer",{}
6 SaveTo 3, size:4, byval:BYVAL
7 ExecExpr "SELECT ($1 + 1)::integer",{23,23,23,23}
8 SaveTo 1, size:4, byval:BYVAL
9 ExecExpr "SELECT ($2 + 1)::integer",{23,23,23,23}
10 SaveTo 2, size:4, byval:BYVAL
11 ExecExpr "SELECT ($3 + 1)::integer",{23,23,23,23}
12 SaveTo 3, size:4, byval:BYVAL
13 ExecExpr "SELECT ($4)::integer",{23,23,23,23}
14 Return size:4, byval:BYVAL
15 Done.
CREATE FUNCTION
