Start defining the Corba work...
From: Taral <taral@cyberjunkie.com>
This commit is contained in:
parent
0856cdf3f7
commit
935a2e694e
|
@ -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
|
||||||
|
|
|
@ -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
|
Loading…
Reference in New Issue