mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-12 18:34:36 +08:00
From: Taral <taral@cyberjunkie.com>
More COS Query Service support.
This commit is contained in:
parent
935a2e694e
commit
91a62480f7
89
src/corba/CosQuery.idl
Normal file
89
src/corba/CosQuery.idl
Normal 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
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user