Start defining the Corba work...

From: Taral <taral@cyberjunkie.com>
This commit is contained in:
Marc G. Fournier 1998-11-16 18:03:34 +00:00
parent 0856cdf3f7
commit 935a2e694e
2 changed files with 161 additions and 0 deletions

View File

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

78
src/corba/pgsql.idl Normal file
View File

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