| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: Returning result of a simple "select * " from a stored procedure without using cursor
Pardon the hassle, but the sql script ends too soon. If you would please
add 11 more transactions at the end, like the previous 100, it should
reach the problem.
Joe
Joseph Weinstein wrote:
> VC wrote:
>
> > Hello Joe,
> >
> > Firstly, let me apologize for my erroneously assuming that you were
> > unfamiliar with other database engines.
> >
> > Please see in-line:
> >
> > In the cases where a customer really
> > > wants read-data not to change for the duration of a transaction, the notion
> > > of getting rereads from a copy can seem dissembling, and Oracle did implement
> > > "SELECT ... FOR UPDATE" as a workaround.
> >
> > Please elaborate why you are calling a rather simple tool (select for
> > update) a 'work-around'. The statement is used for what is known as
> > pessimistic locking. One can resort to a technique called optimistic
> > locking, in WEB environment, in order to avoid using 'select for
> > update' if need be.
>
> I call it a workaround because it requires non-standard SQL, which our our
> product handles in code generation for EJBs etc. If I were boss, I'd ask
> that oracle implemented SERIALIZABLE isolation by locking read data.
>
> > >Don't get me started about
> > > Oracle's clunky implementation of the SERIALIZABLE isolation level either ;-)
> >
> > Oracle currently does not implement the SERIALIZABLE isolation level
> > in the strict sense of the word. What is known as the Oracle
> > serializable isolation level, is commonly considered to be the
> > SNAPSHOT IL.
>
> I agree, but many oracle customers seem to be surprised when I describe
> what actually happens, and the odd bit of dissembling that oracle employs
> in accomplishing a repeatable read.
>
> > > I had to prove to oracle and to our mutual customers that Oracle could silently
> > > commit failed transactions in serializable mode, and that the bug had been
> > > known for years. The issue is (was?) that if in serializable mode a transaction ...[skipped]..>
> >
> > This was true under some older Oracle versions. However, the bug was
> > fixed in May 2002 (patchset 8.1.7.4) and it's hardly fair to discuss
> > the database behaviour in the context of a fixed software bug. If
> > you're saying that the bug is still there, please post (or send me
> > via e-mail) a reproducible test case. I'd very much interested to
> > learn from your experience.
>
> Ok! It was in all oracle versions we'd dealt with from '96 till it was fixed,
> and it was known for years. I believe the recent "fix" is simply to throw an
> exception, failing the transaction in that case. The failure message is not so
> explicit as to say "we can't complete this tx because your insert caused an
> index block to split, and we won't be able to find the row(s) you inserted".
> We get the generic 8177 error. I will attach a SQL-PLUS script and jdbc
> program that you can use to duplicate the problem, and please let me know
> what it does for you. Doing it in Java using oracle's thin driver did give
> an 8177 on the 110th transaction. This is the "cannot serialize this transaction"
> message, which I have to explain to customers when they ask why the DBMS
> cannot serialize a tiny transaction that is just like the other hundreds they've done
> successfully, especially when there's only one user logged in to the DBMS.
> I'm not sure what fairness we're talking about. My discussing it demonstrated
> a history of experience with Oracle, long, and in this case painful, but truth,
> though anecdotal, can't be unfair.
>
> > Whilst I am unhappy myself about the Oracle level of 'bugginess' and
> > the amount of time it takes to fix bugs, I was bitten more often by
> > the locking scheduler behaviour in the READ COMMITTED mode. It comes
> > to one as quite a surprise when one discovers that, under the locking
> > scheduler, aggregate statements can return inconsistent data in the
> > RC mode, especially if one is accustomed to always seeing statement
> > level consistent data
>
> I understand. There are many innocent expectations dashed when tested
> against something other than one's 'mother DBMS'. After enough pain
> and experience going one way and the other, one tempers one's initially
> religious ferver in the defense of one's first DBMS, and develops a
> careful palette of mixed trust and dismay for such products.
>
> > under Oracle.
> > Rgds.
>
> Joe
>
> ----------------------------------------------------------------------------------------------------
> create table isolationtest (id char(250) primary key, val float);
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('1',100);
> update isolationtest set val = 200 where id = '1';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('2',100);
> update isolationtest set val = 200 where id = '2';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('3',100);
> update isolationtest set val = 200 where id = '3';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('4',100);
> update isolationtest set val = 200 where id = '4';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('5',100);
> update isolationtest set val = 200 where id = '5';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('6',100);
> update isolationtest set val = 200 where id = '6';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('7',100);
> update isolationtest set val = 200 where id = '7';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('8',100);
> update isolationtest set val = 200 where id = '8';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('9',100);
> update isolationtest set val = 200 where id = '9';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('10',100);
> update isolationtest set val = 200 where id = '10';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('11',100);
> update isolationtest set val = 200 where id = '11';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('12',100);
> update isolationtest set val = 200 where id = '12';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('13',100);
> update isolationtest set val = 200 where id = '13';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('14',100);
> update isolationtest set val = 200 where id = '14';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('15',100);
> update isolationtest set val = 200 where id = '15';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('16',100);
> update isolationtest set val = 200 where id = '16';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('17',100);
> update isolationtest set val = 200 where id = '17';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('18',100);
> update isolationtest set val = 200 where id = '18';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('19',100);
> update isolationtest set val = 200 where id = '19';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('20',100);
> update isolationtest set val = 200 where id = '20';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('21',100);
> update isolationtest set val = 200 where id = '21';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('22',100);
> update isolationtest set val = 200 where id = '22';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('23',100);
> update isolationtest set val = 200 where id = '23';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('24',100);
> update isolationtest set val = 200 where id = '24';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('25',100);
> update isolationtest set val = 200 where id = '25';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('26',100);
> update isolationtest set val = 200 where id = '26';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('27',100);
> update isolationtest set val = 200 where id = '27';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('28',100);
> update isolationtest set val = 200 where id = '28';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('29',100);
> update isolationtest set val = 200 where id = '29';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('30',100);
> update isolationtest set val = 200 where id = '30';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('31',100);
> update isolationtest set val = 200 where id = '31';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('32',100);
> update isolationtest set val = 200 where id = '32';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('33',100);
> update isolationtest set val = 200 where id = '33';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('34',100);
> update isolationtest set val = 200 where id = '34';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('35',100);
> update isolationtest set val = 200 where id = '35';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('36',100);
> update isolationtest set val = 200 where id = '36';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('37',100);
> update isolationtest set val = 200 where id = '37';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('38',100);
> update isolationtest set val = 200 where id = '38';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('39',100);
> update isolationtest set val = 200 where id = '39';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('40',100);
> update isolationtest set val = 200 where id = '40';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('41',100);
> update isolationtest set val = 200 where id = '41';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('42',100);
> update isolationtest set val = 200 where id = '42';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('43',100);
> update isolationtest set val = 200 where id = '43';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('44',100);
> update isolationtest set val = 200 where id = '44';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('45',100);
> update isolationtest set val = 200 where id = '45';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('46',100);
> update isolationtest set val = 200 where id = '46';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('47',100);
> update isolationtest set val = 200 where id = '47';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('48',100);
> update isolationtest set val = 200 where id = '48';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('49',100);
> update isolationtest set val = 200 where id = '49';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('50',100);
> update isolationtest set val = 200 where id = '50';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('51',100);
> update isolationtest set val = 200 where id = '51';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('52',100);
> update isolationtest set val = 200 where id = '52';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('53',100);
> update isolationtest set val = 200 where id = '53';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('54',100);
> update isolationtest set val = 200 where id = '54';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('55',100);
> update isolationtest set val = 200 where id = '55';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('56',100);
> update isolationtest set val = 200 where id = '56';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('57',100);
> update isolationtest set val = 200 where id = '57';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('58',100);
> update isolationtest set val = 200 where id = '58';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('59',100);
> update isolationtest set val = 200 where id = '59';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('60',100);
> update isolationtest set val = 200 where id = '60';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('61',100);
> update isolationtest set val = 200 where id = '61';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('62',100);
> update isolationtest set val = 200 where id = '62';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('63',100);
> update isolationtest set val = 200 where id = '63';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('64',100);
> update isolationtest set val = 200 where id = '64';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('65',100);
> update isolationtest set val = 200 where id = '65';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('66',100);
> update isolationtest set val = 200 where id = '66';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('67',100);
> update isolationtest set val = 200 where id = '67';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('68',100);
> update isolationtest set val = 200 where id = '68';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('69',100);
> update isolationtest set val = 200 where id = '69';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('70',100);
> update isolationtest set val = 200 where id = '70';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('71',100);
> update isolationtest set val = 200 where id = '71';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('72',100);
> update isolationtest set val = 200 where id = '72';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('73',100);
> update isolationtest set val = 200 where id = '73';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('74',100);
> update isolationtest set val = 200 where id = '74';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('75',100);
> update isolationtest set val = 200 where id = '75';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('76',100);
> update isolationtest set val = 200 where id = '76';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('77',100);
> update isolationtest set val = 200 where id = '77';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('78',100);
> update isolationtest set val = 200 where id = '78';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('79',100);
> update isolationtest set val = 200 where id = '79';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('80',100);
> update isolationtest set val = 200 where id = '80';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('81',100);
> update isolationtest set val = 200 where id = '81';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('82',100);
> update isolationtest set val = 200 where id = '82';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('83',100);
> update isolationtest set val = 200 where id = '83';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('84',100);
> update isolationtest set val = 200 where id = '84';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('85',100);
> update isolationtest set val = 200 where id = '85';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('86',100);
> update isolationtest set val = 200 where id = '86';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('87',100);
> update isolationtest set val = 200 where id = '87';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('88',100);
> update isolationtest set val = 200 where id = '88';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('89',100);
> update isolationtest set val = 200 where id = '89';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('90',100);
> update isolationtest set val = 200 where id = '90';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('91',100);
> update isolationtest set val = 200 where id = '91';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('92',100);
> update isolationtest set val = 200 where id = '92';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('93',100);
> update isolationtest set val = 200 where id = '93';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('94',100);
> update isolationtest set val = 200 where id = '94';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('95',100);
> update isolationtest set val = 200 where id = '95';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('96',100);
> update isolationtest set val = 200 where id = '96';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('97',100);
> update isolationtest set val = 200 where id = '97';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('98',100);
> update isolationtest set val = 200 where id = '98';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('99',100);
> update isolationtest set val = 200 where id = '99';
> COMMIT;
>
> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
> insert into isolationtest (id,val) values ('100',100);
> update isolationtest set val = 200 where id = '100';
> COMMIT;
>
> select 'total transactions', count(*) from isolationtest;
> select 'good transactions', count(*) from isolationtest where val = 200;
> select 'broken transactions', count(*) from isolationtest where val != 200;
> select id from isolationtest where val != 200;
>
> drop table isolationtest;
>
> ----------------------------------------------------------------------------------------------------
> Name: thin_serialize_bug.java
> thin_serialize_bug.java Type: Visual Cafe File (application/x-unknown-content-type-VisualCafeFile.Document)
> Encoding: base64
Received on Tue Oct 21 2003 - 01:42:49 CDT
![]() |
![]() |