1998-11-19 03:39:51 +01:00
|
|
|
#ifndef pgsql_idl
|
|
|
|
#define pgsql_idl
|
|
|
|
|
|
|
|
#ifndef CosQuery_idl
|
|
|
|
#include "CosQuery.idl"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef CosQueryCollection_idl
|
|
|
|
#include "CosQueryCollection.idl"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#pragma prefix ""
|
|
|
|
|
|
|
|
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;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 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>
|
|
|
|
|
|
|
|
// Expirable object
|
|
|
|
|
|
|
|
interface Expirable {
|
|
|
|
/* oneway? */ void keepalive();
|
|
|
|
void remove();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Upcall object
|
|
|
|
|
|
|
|
interface Upcall {
|
|
|
|
void notice(in string message);
|
|
|
|
void abort();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Connected database object
|
|
|
|
|
|
|
|
interface Database : CosQuery::QueryableCollection, Expirable {
|
|
|
|
void setupcall(in Upcall obj);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Server object (stateless)
|
|
|
|
|
|
|
|
interface Server {
|
|
|
|
Database connect(in string db, in string user, in string password);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // pgsql_idl
|