一个内存数据库的源代码这是服务器端还有客户端
源代码在线查看: cxerror1.stable.out
stdout of test 'CXerror1` in directory 'src/optimizer` itself: # 09:06:24 > # 09:06:24 > Mtimeout -timeout 60 Mserver "--config=/ufs/mk/monet5/src/mal/Tests/All.conf" --debug=10 --set "monet_mod_path=/ufs/mk/monet5/Linux/lib/MonetDB5:/ufs/mk/opensource/MonetDB/Linux/lib/MonetDB" --set "gdk_dbfarm=/ufs/mk/opensource/MonetDB/Linux/var/MonetDB5/dbfarm" --set "sql_logdir=/ufs/mk/opensource/MonetDB/Linux/var/MonetDB5/log" --set mapi_port=37375 --set sql_port=44387 --set xquery_port=52599 --set monet_prompt= --trace --dbname=mTests_src_optimizer CXerror1.mal < /dev/null # 09:06:24 > # Monet Database Server V4.99.19 # Copyright (c) 1993-2005, CWI. All rights reserved. # Compiled for x86_64-redhat-linux-gnu/64bit with 32bit OIDs; dynamically linked. # config:/ufs/mk/monet5/src/mal/Tests/All.conf # dbfarm:/ufs/mk/opensource/MonetDB/Linux/var/MonetDB5/dbfarm # dbname:mTests_src_optimizer # Visit http://monetdb.cwi.nl/ for further information. ##provided by roberto #function user.f1(); # # create bat # xxx := bat.new(:void, :dbl); # bat.setName(xxx,"xxx"); # bat.setPersistent(xxx,true); # transaction.commit(); # # # check existance # xxx_1 := bbp.getNames(); # xxx_2 := bat.reverse(xxx_1); # xxx_3 := algebra.exist(xxx_2,"xxx"); # # # if it exists, print it # barrier ifb := xxx_3; # a := bbp.bind("xxx"); # io.print(a); # exit ifb; # # # remove it # b := bbp.bind("xxx"); ## here, it becomes b := a; # bat.setPersistent(b,false); ## but a might be not defined # transaction.commit(); #end f1; function user.f1():void; # 0 (f1:void) # create bat # 1 (_1:str) xxx := bat.new(:void,:dbl); # 2 CMDBATnew (xxx:bat[:void,:dbl]) bat.setName(xxx,"xxx"); # 3 BKCsetName (_5:void) bat.setPersistent(xxx,true); # 4 BKCpersists (_7:void) transaction.commit(); # 5 TRNglobal_commit (_9:bit) # check existance # 6 (_10:str) xxx_1 := bbp.getNames(); # 7 CMDbbpNames (xxx_1:bat[:int,:str]) xxx_2 := bat.reverse(xxx_1); # 8 BKCreverse (xxx_2:bat[:str,:int]) xxx_3 := algebra.exist(xxx_2,"xxx"); # 9 ALGexist (xxx_3:bit) # if it exists, print it # 10 (_14:str) barrier ifb := xxx_3; # 11 (ifb:bit) a := bbp.bind("xxx"); # 12 CMDbbpbind (a:bat[:any,:any]) io.print(a); # 13 IOprint_val (_17:void) exit ifb; # 14 (ifb:bit) # remove it # 15 (_18:str) b := bbp.bind("xxx"); # 16 CMDbbpbind (b:bat[:any,:any]) ## here, it becomes b := a; # 17 (_20:str) bat.setPersistent(b,false); # 18 BKCpersists (_21:void) ## but a might be not defined # 19 (_23:str) transaction.commit(); # 20 TRNglobal_commit (_24:bit) end f1; # 21 #optimizer.commonExpressionRemoval("user", "f1"); # function user.main():void; # 0 (main:void) #provided by roberto # 1 (_2:str) end main; # 2 # 09:06:24 > # 09:06:24 > Done. # 09:06:24 >