diff options
author | Marc G. Fournier | 1998-11-16 18:03:34 +0000 |
---|---|---|
committer | Marc G. Fournier | 1998-11-16 18:03:34 +0000 |
commit | 935a2e694e54c4c53359342a2681ed10be4751df (patch) | |
tree | 8b5b91929dd44521583ef40a4ccaac973896eacc | |
parent | 0856cdf3f7086156fa9e78cb0c93a62f701bdec0 (diff) |
Start defining the Corba work...
From: Taral <[email protected]>
-rw-r--r-- | src/corba/CosQueryCollection.idl | 83 | ||||
-rw-r--r-- | src/corba/pgsql.idl | 78 |
2 files changed, 161 insertions, 0 deletions
diff --git a/src/corba/CosQueryCollection.idl b/src/corba/CosQueryCollection.idl new file mode 100644 index 00000000000..f6473d420e9 --- /dev/null +++ b/src/corba/CosQueryCollection.idl @@ -0,0 +1,83 @@ +/* RCS $Id: CosQueryCollection.idl,v 1.1 1998/11/16 18:03:34 scrappy Exp $
+ *
+ * ----------------------------------------------------------------------------
+ * This is unmarked software provided by the Object Management Group,Inc. (OMG)
+ * ----------------------------------------------------------------------------
+ */
+
+
+/**
+ * CosQueryCollection is the Common Object Services Specification query
+ * query colleciton module as it it appears in COSS1, v1.0.
+ */
+
+
+#ifndef CosQueryCollection_idl
+#define CosQueryCollection_idl
+
+module CosQueryCollection {
+
+ exception ElementInvalid {};
+ exception IteratorInvalid {};
+ exception PositionInvalid {};
+
+ typedef string Istring;
+ struct NVPair {
+ Istring name;
+ any value;
+ };
+
+ typedef sequence<NVPair> ParameterList;
+
+ interface Collection;
+ interface Iterator;
+
+ interface CollectionFactory {
+ Collection create (in ParameterList params);
+ };
+
+ interface Collection {
+
+ readonly attribute long cardinality;
+
+ void add_element (in any element)
+ raises(ElementInvalid);
+
+ void add_all_elements (in Collection elements)
+ raises(ElementInvalid);
+
+ void insert_element_at (in any element, in Iterator where)
+ raises(IteratorInvalid,
+ ElementInvalid);
+
+ void replace_element_at (in any element, in Iterator where)
+ raises(IteratorInvalid,
+ PositionInvalid,
+ ElementInvalid);
+
+ void remove_element_at (in Iterator where)
+ raises(IteratorInvalid,
+ PositionInvalid);
+
+ void remove_all_elements ();
+
+ any retrieve_element_at (in Iterator where)
+ raises(IteratorInvalid,
+ PositionInvalid);
+
+ Iterator create_iterator ();
+
+ };
+
+ interface Iterator {
+ any next ()
+ raises(IteratorInvalid,
+ PositionInvalid);
+ void reset ();
+ boolean more ();
+ };
+
+};
+
+#endif // CosQueryCollection_idl
+
diff --git a/src/corba/pgsql.idl b/src/corba/pgsql.idl new file mode 100644 index 00000000000..33c54840162 --- /dev/null +++ b/src/corba/pgsql.idl @@ -0,0 +1,78 @@ +#include "CosQueryCollection.idl"
+
+#ifndef pgsql_idl
+#define pgsql_idl
+
+module PostgreSQL {
+
+ // Built-in types
+
+ module Types {
+ // Arrays in network order
+ typedef short int2;
+ typedef long int4;
+ typedef long int8[2];
+ };
+
+
+ // NULL support
+
+ typedef boolean Null;
+
+ union Value switch (Null) {
+ case false: any value;
+ };
+
+ typedef sequence<Value> Row;
+
+ // <info>
+ // More about the application of COSS:
+ //
+ // A Table will be a QueryableCollection of Rows
+ // A Database will be a QueryableCollection of Tables
+ // Both will be queryable via the Query Service
+ //
+ // Other relations will be representable using the Relationship Service
+ // This includes primary/foreign keys and anything else :)
+ //
+ // GRANT/REVOKE can be supplied via the Security Service
+ //
+ // 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:
+ //
+ // 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.
+ //
+ // I'm not sure yet about LOCK and UNLOCK.
+ // </info>
+
+
+ // Query result interface
+ //
+ // Should the iterator support a 'boolean skip(in long n)' extension?
+
+ interface QueryResult : CosQueryCollection::Collection {};
+ interface QueryResultIterator : CosQueryCollection::Iterator {};
+
+
+ // Connected database object
+
+ interface Database {
+ QueryResult exec(in string query);
+ void disconnect();
+ };
+
+
+ // Server object (stateless)
+
+ interface Server {
+ Database connect(in string db, in string user, in string password);
+ };
+};
+
+#endif // pgsql_idl
|