📄 id.602271.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 + -