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

📄 id.602271.mils

📁 一个内存数据库的源代码这是服务器端还有客户端
💻 MILS
字号:
# Date:		2002-08-30 00:57# Priority:	5# Submitted By:	Alex van Ballegooij (bally)# Assigned To:	Niels Nes (nielsnes)# Category:	None# Status:	Closed# Summary:# oid v.s. void bat behavior# # void bats behave differntly fomr oid bats under insertion, # yet it is possible to unexpectedly end up with void # bats after certain operations (e.g. join), which could # lead to unpredictable behavior. # Build two simple bats, using OIDs.var oid_oid_bat := insert(insert(bat(oid,oid),oid(0),oid(0)),oid(1),oid(1));print(oid_oid_bat);var oid_int_bat := insert(insert(bat(oid,int),oid(0),0),oid(1),1);print(oid_int_bat);# Monet decides to make the join result VOID (which is possible),# what makes this problematic however is the difference in behavior in# the subsequent insert-tests.var void_int_bat := join(oid_oid_bat,oid_int_bat);print(void_int_bat);# inserting 'in-sequence' into an OID bat# a single (OID) tuple print(insert(access(copy(oid_int_bat),BAT_WRITE),      oid(2),2));# a complete (OID) bat.print(insert(access(copy(oid_int_bat),BAT_WRITE),      insert(bat(oid,int),oid(2),2)));# a complete (VOID) bat.print(insert(access(copy(oid_int_bat),BAT_WRITE),             insert(seqbase(bat(void,int),oid(2)),oid(2),2)));# inserting 'out-of-sequence' into an OID bat# a single (OID) tuple print(insert(access(copy(oid_int_bat),BAT_WRITE),      oid(10),10));# a complete (OID) bat.print(insert(access(copy(oid_int_bat),BAT_WRITE),      insert(bat(oid,int),oid(10),10)));# a complete (VOID) bat.print(insert(access(copy(oid_int_bat),BAT_WRITE),             insert(seqbase(bat(void,int),oid(10)),oid(10),10)));# inserting 'in-sequence' into a VOID bat# a single (OID) tuple print(insert(access(copy(void_int_bat),BAT_WRITE),      oid(2),2));# a complete (OID) bat.print(insert(access(copy(void_int_bat),BAT_WRITE),      insert(bat(oid,int),oid(2),2)));# a complete (VOID) bat.print(insert(access(copy(void_int_bat),BAT_WRITE),             insert(seqbase(bat(void,int),oid(2)),oid(2),2)));# inserting 'out-of-sequence' into a VOID bat# a single (OID) tuple # This test gives an error:print(insert(access(copy(void_int_bat),BAT_WRITE),      oid(10),10));# These two tests give incorrect answers:# a complete (OID) bat.print(insert(access(copy(void_int_bat),BAT_WRITE),      insert(bat(oid,int),oid(10),10)));# a complete (VOID) bat.print(insert(access(copy(void_int_bat),BAT_WRITE),             insert(seqbase(bat(void,int),oid(10)),oid(10),10)));## The void-bats behave strange under insertion,# Either errors should be given consequently # (as soon as a tuple 'out-of-sequence' is inserted)# or void bats should be materialized to oid when needed.## I would argue for the latter, as there is no real reason # for a user to expect the bat in this example to be void,# (a join result of a [oid,oid] and a [oid,int] bat), yet# it behaves differently from what a user would expect from# the (expected) [oid,int] bat.## The provided stable output has been hand-crafted to # depict that which I argue to be the 'correct' outpu.#

⌨️ 快捷键说明

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