From: Marc G. Fournier <scrappy@hub.org>
Date: Tue, 17 Nov 1998 03:10:36 +0000 (+0000)
Subject: From: Taral <taral@cyberjunkie.com>
X-Git-Tag: REL6_5~962
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=91a62480f7134d862faa6eb7a2e31d29715de42f;p=postgresql

From: Taral <taral@cyberjunkie.com>

More COS Query Service support.
---

diff --git a/src/corba/CosQuery.idl b/src/corba/CosQuery.idl
new file mode 100644
index 0000000000..881be07d6e
--- /dev/null
+++ b/src/corba/CosQuery.idl
@@ -0,0 +1,89 @@
+/* RCS $Id: CosQuery.idl,v 1.1 1998/11/17 03:10:35 scrappy Exp $
+ *
+ * ----------------------------------------------------------------------------
+ * This is unmarked software provided by the Object Management Group,Inc. (OMG)
+ * ----------------------------------------------------------------------------
+ */
+
+
+/**
+ * CosQuery is the Common Object Services Specification query module
+ * as it it appears in COSS1, v1.0.
+ */
+
+
+#ifndef CosQuery_idl
+#define CosQuery_idl
+
+#ifndef CosQueryCollection_idl
+#include "CosQueryCollection.idl"
+#endif
+
+module CosQuery {
+
+  exception QueryInvalid {string why;}; 
+  exception QueryProcessingError {string why;}; 
+  exception QueryTypeInvalid {};
+
+  enum QueryStatus {complete, incomplete};
+
+  typedef CosQueryCollection::ParameterList ParameterList;
+
+  typedef CORBA::InterfaceDef QLType;
+  typedef sequence<QLType> QLTypeSeq;
+
+  interface Query;
+  interface QueryLanguageType {}; 
+  interface SQLQuery : QueryLanguageType {}; 
+  interface SQL_92Query : SQLQuery {}; 
+  interface OQL : QueryLanguageType {}; 
+  interface OQLBasic : OQL {}; 
+  interface OQL_93 : OQL {}; 
+  interface OQL_93Basic : OQL_93, OQLBasic {};
+
+  interface QueryEvaluator { 
+
+    readonly attribute QLTypeSeq ql_types; 
+    readonly attribute QLType default_ql_type;
+
+    any evaluate (in string         query,
+		  in QLType         ql_type, 
+		  in ParameterList  params) 
+      raises(QueryTypeInvalid,
+	     QueryInvalid,
+	     QueryProcessingError); 
+  };
+
+  interface QueryableCollection : QueryEvaluator, 
+    CosQueryCollection::Collection {
+
+  };
+
+  interface QueryManager : QueryEvaluator { 
+
+    Query create (in string          query,
+		  in QLType          ql_type, 
+		  in  ParameterList  params) 
+      raises(QueryTypeInvalid,
+	     QueryInvalid);
+
+  };
+
+  interface Query { 
+
+    readonly attribute QueryManager query_mgr;
+
+    void prepare (in ParameterList params) 
+      raises(QueryProcessingError); 
+
+    void execute (in ParameterList params) 
+      raises(QueryProcessingError);
+
+    QueryStatus get_status (); 
+
+    any get_result (); 
+  };
+
+};
+
+#endif // CosQuery_idl
diff --git a/src/corba/pgsql.idl b/src/corba/pgsql.idl
index 33c5484016..63a593b2f3 100644
--- a/src/corba/pgsql.idl
+++ b/src/corba/pgsql.idl
@@ -1,78 +1,79 @@
-#include "CosQueryCollection.idl"
-
 #ifndef pgsql_idl
 #define pgsql_idl
 
+#ifndef CosQuery_idl
+#include "CosQuery.idl"
+#endif
+
+#ifndef CosQueryCollection_idl
+#include "CosQueryCollection.idl"
+#endif
+
 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);
-    };
+	
+	// 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;
+	};
+	
+	
+	// Row definition
+	
+	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
+	// (Currently Tables are not exported... maybe later.)
+	// 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>
+	
+	
+	// Connected database object
+	
+	interface Database : CosQuery::QueryableCollection {
+		void disconnect();
+	};
+	
+	
+	// Server object (stateless)
+	
+	interface Server {
+		Database connect(in string db, in string user, in string password);
+	};
 };
 
 #endif // pgsql_idl