diff --git a/src/corba/CosQueryCollection.idl b/src/corba/CosQueryCollection.idl
new file mode 100644
index 0000000000000000000000000000000000000000..f6473d420e9d470cdf96d6c86c1ac1940cf3c6ed
--- /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 0000000000000000000000000000000000000000..33c548401625e66fd33370749de53923fdfca97d
--- /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