From: Taral <taral@cyberjunkie.com>

More COS Query Service support.
This commit is contained in:
Marc G. Fournier 1998-11-17 03:10:36 +00:00
parent 935a2e694e
commit 91a62480f7
2 changed files with 161 additions and 71 deletions

89
src/corba/CosQuery.idl Normal file
View File

@ -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

View File

@ -1,78 +1,79 @@
#include "CosQueryCollection.idl"
#ifndef pgsql_idl #ifndef pgsql_idl
#define pgsql_idl #define pgsql_idl
#ifndef CosQuery_idl
#include "CosQuery.idl"
#endif
#ifndef CosQueryCollection_idl
#include "CosQueryCollection.idl"
#endif
module PostgreSQL { module PostgreSQL {
// Built-in types // Built-in types
module Types { module Types {
// Arrays in network order // Arrays in network order
typedef short int2; typedef short int2;
typedef long int4; typedef long int4;
typedef long int8[2]; typedef long int8[2];
}; };
// NULL support // NULL support
typedef boolean Null; typedef boolean Null;
union Value switch (Null) { union Value switch (Null) {
case false: any value; case false: any value;
}; };
typedef sequence<Value> Row;
// Row definition
// <info>
// More about the application of COSS: typedef sequence<Value> Row;
//
// A Table will be a QueryableCollection of Rows // <info>
// A Database will be a QueryableCollection of Tables // More about the application of COSS:
// Both will be queryable via the Query Service //
// // A Table will be a QueryableCollection of Rows
// Other relations will be representable using the Relationship Service // A Database will be a QueryableCollection of Tables
// This includes primary/foreign keys and anything else :) // (Currently Tables are not exported... maybe later.)
// // Both will be queryable via the Query Service
// GRANT/REVOKE can be supplied via the Security Service //
// // Other relations will be representable using the Relationship Service
// See a pattern here? The whole of SQL can be implemented by these services! // This includes primary/foreign keys and anything else :)
// The statements go through a parser. Queries and subqueries are passed to the //
// database for processing. Returned items are handled appropriately: // GRANT/REVOKE can be supplied via the Security Service
// //
// SELECT: return the items to the caller // See a pattern here? The whole of SQL can be implemented by these services!
// UPDATE: modify the items (direct) // The statements go through a parser. Queries and subqueries are passed to the
// DELETE: call delete() on each Row (direct) // database for processing. Returned items are handled appropriately:
// GRANT/REVOKE: modify ACLs (via Security Service) //
// ALTER: modify the items (direct) and/or the relations (via Relationship Service) // SELECT: return the items to the caller
// etc. // UPDATE: modify the items (direct)
// // DELETE: call delete() on each Row (direct)
// I'm not sure yet about LOCK and UNLOCK. // GRANT/REVOKE: modify ACLs (via Security Service)
// </info> // ALTER: modify the items (direct) and/or the relations (via Relationship Service)
// etc.
//
// Query result interface // I'm not sure yet about LOCK and UNLOCK.
// // </info>
// Should the iterator support a 'boolean skip(in long n)' extension?
interface QueryResult : CosQueryCollection::Collection {}; // Connected database object
interface QueryResultIterator : CosQueryCollection::Iterator {};
interface Database : CosQuery::QueryableCollection {
void disconnect();
// Connected database object };
interface Database {
QueryResult exec(in string query); // Server object (stateless)
void disconnect();
}; interface Server {
Database connect(in string db, in string user, in string password);
};
// Server object (stateless)
interface Server {
Database connect(in string db, in string user, in string password);
};
}; };
#endif // pgsql_idl #endif // pgsql_idl