⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 no.089_s00.mal

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 MAL
字号:
# Monet Mil to Mal compiler# Copyright (c) 2001-2004, CWI. All rights reserved.#Predefined code segment#The compiler can not guarantee an accurate compilation,#because MIL unlike MAL is a dynamically typed language.#A few guidelines to maximize usefullness.#- make the type of variables explicit, in particular 'nil'#- upon advice of M2m to remap identifiers, change it in your program directly#use the "mil_schema" for additional support routines#	io.print("# >Number:         89\n");#	io.print("# >Category:       Mserver\n");#	io.print("# >Synopsis:       abort doesn't work right when BATs are unloaded\n");#	io.print("# >Confidential:   no\n");#	io.print("# >Severity:       serious\n");#	io.print("# >Priority:       high\n");#	io.print("# >Responsible:    boncz\n");#	io.print("# >State:          open\n");#	io.print("# >Class:          sw-bug\n");#	io.print("# >Submitter-Id:   unknown\n");#	io.print("# >Arrival-Date:   Mon Dec  1 14:49:04 1997\n");#	io.print("# >Originator:     windhouw\n");#	io.print("# >Organization:\n");#	io.print("# UvA\n");#	io.print("# >Release:        971007\n");#	io.print("# >Environment:\n");#	io.print("# \n");#	io.print("# >Description:\n");#	io.print("# The following problem occurs:\n");#	io.print("# - I'm running a \"transaction\";\n");#	io.print("# - I abort the transaction;\n");#	io.print("# - the updates and bat.inserts seems to be reversed;\n");#	io.print("# - I quit Mserver and restart it;\n");#	io.print("# - the updates and bat.inserts are back again.\n");#	io.print("# \n");#	io.print("# It seems to be that BATs that are swapped out of\n");#	io.print("# memory, don't take part in the abort.\n");#	io.print("# \n");#	io.print("# I replayed this scene by explicitly swapping the BAT\n");#	io.print("# to disk:\n");#	io.print("# #You are system administrator (adm)!\n");#	io.print("# >module(url);\n");#	io.print("# >Server := bbp.new(oid,url);\n");#	io.print("# >Server.persists(true);\n");#	io.print("# >Server.rename(\"Server\");\n");#	io.print("# >Server.insert(oid(1),url(\"http://www.cwi.nl/\")); \n");#	io.print("# >Server.print;\n");#	io.print("# #---------------------------------#\n");#	io.print("# # oid   | Server                  #\n");#	io.print("# #---------------------------------#\n");#	io.print("# [ 1@0,    http://www.cwi.nl/      ]\n");#	io.print("# >Server.unload;\n");#	io.print("# >abort;\n");#	io.print("# >Server.print;\n");#	io.print("# #-----------------#\n");#	io.print("# # oid   | Server  #\n");#	io.print("# #-----------------#\n");#	io.print("# ... QUIT & RESTART ...\n");#	io.print("# #You are system administrator (adm)!\n");#	io.print("# >module(url);\n");#	io.print("# >Server.print;\n");#	io.print("# #---------------------------------#\n");#	io.print("# # oid   | Server                  #\n");#	io.print("# #---------------------------------#\n");#	io.print("# [ 1@0,    http://www.cwi.nl/      ]\n");#	io.print("# \n");#	io.print("# As this problem frequently occurs while testing my\n");#	io.print("# application, my database gets inconsistent which\n");#	io.print("# leads to runtime errors in the odmg packages (like\n");#	io.print("# oid not found in the extent), while abort should\n");#	io.print("# give me the possibilty to get back to the previous\n");#	io.print("# consistent state of the database.\n");#	io.print("var Server:= bbp.new(oid,url).persists(true).rename(\"Server\");");	aa_a := bbp.new(nil:oid,nil:url);	ba_a := persists(aa_a,true);	Server := bat.setName(ba_a,"Server");#	io.print("var Server2:= bbp.new(oid,url).persists(true).rename(\"Server2\");");	ca_a := bbp.new(nil:oid,nil:url);	da_a := persists(ca_a,true);	Server2 := bat.setName(da_a,"Server2");#	io.print("var Clients:= bbp.new(oid,int).persists(true).rename(\"Clients\");");	ea_a := bbp.new(nil:oid,nil:int);	fa_a := persists(ea_a,true);	Clients := bat.setName(fa_a,"Clients");#	io.print("var Clients2:= bbp.new(oid,int).persists(true).rename(\"Clients2\");");	ga_a := bbp.new(nil:oid,nil:int);	ha_a := persists(ga_a,true);	Clients2 := bat.setName(ha_a,"Clients2");#	io.print("commit();");	ia_a := commit();#	io.print("Server.insert(oid(1),url(\"http://www.cwi.nl/\")); ");	ja_a := calc.oid(1);	ka_a := url("http://www.cwi.nl/");	la_a := bat.insert(Server,ja_a,ka_a);#	io.print("Server2.insert(oid(1),url(\"http://www.cwi.nl/\")); ");	ma_a := calc.oid(1);	na_a := url("http://www.cwi.nl/");	oa_a := bat.insert(Server2,ma_a,na_a);#	io.print("Clients.insert(oid(1),3); ");	pa_a := calc.oid(1);	qa_a := bat.insert(Clients,pa_a,3);#	io.print("Clients2.insert(oid(1),3); ");	ra_a := calc.oid(1);	sa_a := bat.insert(Clients2,ra_a,3);#	io.print("Server.print();");	ta_a := bat.print(Server);#	io.print("Server2.print();");	ua_a := bat.print(Server2);#	io.print("Clients.print();");	va_a := bat.print(Clients);#	io.print("Clients2.print();");	wa_a := bat.print(Clients2);#	io.print("dir(\"Server\");");	xa_a := dir("Server");#	io.print("dir(\"Clients\");");	ya_a := dir("Clients");#	io.print("unload(\"Server\");");	ab_a := unload("Server");#	io.print("unload(\"Clients\");");	bb_a := unload("Clients");#	io.print("dir(\"Server\");");	cb_a := dir("Server");#	io.print("dir(\"Clients\");");	db_a := dir("Clients");#	io.print("abort();");	eb_a := abort();#	io.print("dir(\"Server\");");	fb_a := dir("Server");#	io.print("dir(\"Clients\");");	gb_a := dir("Clients");#	io.print("Server.print();");	hb_a := bat.print(Server);#	io.print("Server2.print();");	ib_a := bat.print(Server2);#	io.print("Clients.print();");	jb_a := bat.print(Clients);#	io.print("Clients2.print();");	kb_a := bat.print(Clients2);#	io.print("quit();");	lb_a := clients.quit();#Identifer 'rename' mapped to 'bat.setName'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -