ziv@2203: table foo01 : {Id : int, Bar : string} PRIMARY KEY Id ziv@2203: table foo10 : {Id : int, Bar : string} PRIMARY KEY Id ziv@2203: ziv@2203: (* val query = (SELECT * FROM foo WHERE foo.Bar = "baz") *) ziv@2203: (* val insert = (INSERT INTO foo (Id, Bar) VALUES (42, "baz")) *) ziv@2203: ziv@2203: fun flush01 () : transaction page= ziv@2203: dml (INSERT INTO foo01 (Id, Bar) VALUES (42, "baz")); ziv@2203: return ziv@2203: ziv@2203: ziv@2203: Flushed 1! ziv@2203: ziv@2203: ziv@2203: ziv@2203: fun flush10 () : transaction page= ziv@2203: dml (INSERT INTO foo10 (Id, Bar) VALUES (42, "baz")); ziv@2203: return ziv@2203: ziv@2203: ziv@2203: Flushed 2! ziv@2203: ziv@2203: ziv@2203: ziv@2203: fun flush11 () : transaction page= ziv@2203: dml (INSERT INTO foo01 (Id, Bar) VALUES (42, "baz")); ziv@2203: dml (INSERT INTO foo10 (Id, Bar) VALUES (42, "baz")); ziv@2203: return ziv@2203: ziv@2203: ziv@2203: Flushed 1 and 2! ziv@2203: ziv@2203: ziv@2203: ziv@2203: fun cache01 () : transaction page = ziv@2203: res <- oneOrNoRows (SELECT foo01.Id, foo01.Bar ziv@2203: FROM foo01 ziv@2203: WHERE foo01.Bar = "baz"); ziv@2203: return ziv@2203: ziv@2203: ziv@2203: Reading 1. ziv@2203: {case res of ziv@2203: None => ziv@2203: | Some row => {[row.Foo01.Bar]}} ziv@2203: ziv@2203: ziv@2203: ziv@2203: fun cache10 () : transaction page = ziv@2203: res <- oneOrNoRows (SELECT foo10.Id, foo10.Bar ziv@2203: FROM foo10 ziv@2203: WHERE foo10.Bar = "baz"); ziv@2203: return ziv@2203: ziv@2203: ziv@2203: Reading 2. ziv@2203: {case res of ziv@2203: None => ziv@2203: | Some row => {[row.Foo10.Bar]}} ziv@2203: ziv@2203: ziv@2203: ziv@2203: fun cache11 () : transaction page = ziv@2203: res <- oneOrNoRows (SELECT foo01.Id, foo01.Bar ziv@2203: FROM foo01 ziv@2203: WHERE foo01.Bar = "baz"); ziv@2203: bla <- oneOrNoRows (SELECT foo10.Id, foo10.Bar ziv@2203: FROM foo10 ziv@2203: WHERE foo10.Bar = "baz"); ziv@2203: return ziv@2203: ziv@2203: ziv@2203: Reading 1 and 2. ziv@2203: {case res of ziv@2203: None => ziv@2203: | Some row => {[row.Foo01.Bar]}} ziv@2203: {case bla of ziv@2203: None => ziv@2203: | Some row => {[row.Foo10.Bar]}} ziv@2203: ziv@2203: