Re: RFD: access to remore databases: altername suggestion - Mailing list pgsql-hackers
From | Alex Pilosov |
---|---|
Subject | Re: RFD: access to remore databases: altername suggestion |
Date | |
Msg-id | Pine.BSO.4.10.10110021849180.24384-100000@spider.pilosoft.com Whole thread Raw |
In response to | RFD: access to remore databases: altername suggestion (<manieq@idea.net.pl>) |
List | pgsql-hackers |
You are attacking here two things: a) schemas, which should be done in 7.3, thus multiple databases on same host would be unnecessary. b) connections to remote host' databases, which is partially implemented already (in a ugly way, but...) see contrib/dblink What you described is a syntactic sugar to implement b) which isn't a bad idea, but just consider, it is already done. sorta. On Wed, 3 Oct 2001 manieq@idea.net.pl wrote: > Hi! > > 0. I think access to other databases is really important. There was > a discussion about that. Using a dot operator to specify a > database (schema) seems to be very standard and elegant. > But there is another way to implement it. Here is my > suggestion. > > 1. First, some syntax: > > CREATE [ SHARED ] [ TRUSTED ] CONNECTION conn_name > USING 'conn_string' > [ CONNECT ON { LOGIN | USE } ] > [ DISCONNECT ON { LOGOUT | COMMIT } ]; > > Description > Creates a connection definition (Oracle: database link) to > a remote database. > > SHARED > Means only one instance of connection exists and is accessible > to all qualified users. > > TRUSTED > Only superusers can use this connection (like TRUSTED modifier > in CREATE LANGUAGE). > > conn_name > Just an identifier. > > 'conn_string' > Connect string in standard form accepted by libpq > 'PQconnectdb' function. > > CONNECT ON { LOGIN | USE } > Defines whether connection should be established when > user logs in, or when references remote object for the > first time (default). > > DISCONNECT ON { LOGOUT | COMMIT } > Defines whether connection should be closed when > user logs out (default), or when transaction is ended (COMMIT, > ROLLBACK, but also exiting). > > 2. Additional commands > > ALTER CONNECTION conn_name > USING 'conn_string' > [ CONNECT ON { LOGIN | USE } ] > [ DISCONNECT ON { LOGOUT | COMMIT } ]; > > Description > Changes behaviour of a defined connection (same parameters > as for CREATE CONNECTION). > > > DROP CONNECTION conn_name; > > Description > Hmm... drop the connection definition? > > > Also a new privilege CONNECT should be added, so > GRANT CONNECT ON remote_database TO SCOTT; > can be processed. > > > 3. How to use this? > > SELECT local.id, remote.name > FROM orders local, emp@remote_database remote > WHERE local.emp_id = remote.id; > > SELECT give_a_raise_proc@rempte_database(1000); > > > 4. Some notes (in random order) > > If a 'conn_string' does not contain a user/password information, > connection is performed using current user identity. But, for SHARED > connection always use a 'nobody' account (remeber to create > 'nobody' user on remote database). For security reasons > 'conn_string' must be stored in encrypted form. > > When CONNECT ON LOGIN is used, connection is etablished > only if user has CONNECTprivilege granted on this. For TRUSTED > connection also superuser rights must be checked. > > If first remote object is accessed within a transaction, a remote > transaction should be started. When trancaction ends, remote > transaction should also be ended same way (commit or rollback). > > SHARED connection should be established when first user logs in > or uses remote object (depends on CONNECT ON clause) and > terminated when last user ends transaction or disconnects > (depens on DISCONNECT ON clause). Of course no remote > transaction can be performed for SHARED connection. > > Of course it would require lot of work, but can be parted. The > minimum IMHO can be a SHARED connection with > CONNECT ON USE and DISCONNECT ON LOGOUT behaviour. > > 5. Conclusion > > I know it is much easier to 'invent' a new functionality than > to implement it. I also realize this proposal is not complete > nor coherent. Still want to listen/read your opinions about it. > > Regards, > > Mariusz Czulada > > P.S.: Is it planned to add 'auto_transaction' parameter on server > or database levels, so events like login, commit or rolback > automaticly start a new transaction without 'BEGIN WORK' > (like Oracle does)? > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > >
pgsql-hackers by date: