Received: from id.godlike.com (id.godlike.com [206.205.199.129]) by hub.org (8.9.1/8.9.1) with ESMTP id MAA27287 for ; Mon, 16 Nov 1998 12:23:41 -0500 (EST) (envelope-from taral@cyberjunkie.com) Received: from taral ([208.247.20.138]) by id.godlike.com (8.8.5/8.8.5) with SMTP id MAA02258 for ; Mon, 16 Nov 1998 12:23:38 -0500 (EST) From: "Taral" To: Subject: Oops.. IDL update again Date: Mon, 16 Nov 1998 11:23:38 -0600 Message-ID: <000401be1185$d928b9c0$8a14f7d0@taral.dobiecenter.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0005_01BE1153.8E8E49C0" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3155.0 This is a multi-part message in MIME format. ------=_NextPart_000_0005_01BE1153.8E8E49C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Attached. (forgot that a custom Collection needs a custom Iterator) Taral ------=_NextPart_000_0005_01BE1153.8E8E49C0 Content-Type: application/octet-stream; name="pgsql.idl" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="pgsql.idl" #include "CosQueryCollection.idl" #ifndef pgsql_idl #define pgsql_idl module PostgreSQL { =20 // Built-in types =20 module Types { // Arrays in network order typedef short int2; typedef long int4; typedef long int8[2]; }; =20 =20 // NULL support =20 typedef boolean Null; =20 union Value switch (Null) { case false: any value; }; =20 typedef sequence Row; =20 // // More about the application of COSS: //=20 // A Table will be a QueryableCollection of Rows // A Database will be a QueryableCollection of Tables // Both will be queryable via the Query Service //=20 // Other relations will be representable using the Relationship = Service // This includes primary/foreign keys and anything else :) //=20 // GRANT/REVOKE can be supplied via the Security Service //=20 // See a pattern here? The whole of SQL can be implemented by these = services! // The statements go through a parser. Queries and subqueries are = passed to the // database for processing. Returned items are handled = appropriately: //=20 // SELECT: return the items to the caller // UPDATE: modify the items (direct) // DELETE: call delete() on each Row (direct) // GRANT/REVOKE: modify ACLs (via Security Service) // ALTER: modify the items (direct) and/or the relations (via = Relationship Service) // etc. //=20 // I'm not sure yet about LOCK and UNLOCK. // =20 =20 // Query result interface //=20 // Should the iterator support a 'boolean skip(in long n)' = extension? =20 interface QueryResult : CosQueryCollection::Collection {}; interface QueryResultIterator : CosQueryCollection::Iterator {}; =20 =20 // Connected database object =20 interface Database { QueryResult exec(in string query); void disconnect(); }; =20 =20 // Server object (stateless) =20 interface Server { Database connect(in string db, in string user, in string = password); }; }; #endif // pgsql_idl ------=_NextPart_000_0005_01BE1153.8E8E49C0--