PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 10/04/2009 10:23:43

oracle2pgsql
Membre

Oracle to Postgresql - CREATE SYNONYM

Bonjour a tous,


Voilà je travail en ce moment sur la migration d'une base Oracle vers Postgresql. Or, je me retrouve dans l'incapacité de créer des SYNONYM (alias persistant de nom de table). Connaissez-vous un moyen de palier à ce défaut de Postgresql (qui selon Postgresql n'en est pas un d'ailleurs car il empêche de réaliser une base lourde de sens).

Mon seul résultat google pertinent a été celui-ci : http://archives.postgresql.org/pgsql-pa … g00085.php
qui propose un patch ajoutant cette fonctionnalité à Postgresql 8.1.3 mais je travail sur la dernière version 8.3.7 ... est-ce que ça aurait du sens d'aller essayer de trafiquer les sources de la nouvelle version en essayant d'insérer le code du patch de 2006 là où il faudrait... c'est risqué je pense... les fichiers concernés ont du grandement changé depuis :
+++ postgresql-8.1.3/src/backend/catalog/namespace.c    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/catalog/pg_synonym.c    2006-03-03 00:50:40.000000000 +0100
+++ postgresql-8.1.3/src/backend/catalog/Makefile    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/catalog/dependency.c    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/tcop/utility.c    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/utils/cache/syscache.c    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/utils/cache/lsyscache.c    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/commands/synonym.c    2006-03-03 00:52:28.000000000 +0100
+++ postgresql-8.1.3/src/backend/commands/Makefile    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/nodes/equalfuncs.c    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/nodes/copyfuncs.c    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/parser/gram.y    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/backend/parser/keywords.c    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/catalog/indexing.h    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/catalog/pg_synonym.h    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/catalog/dependency.h    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/utils/syscache.h    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/commands/synonym.h    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/nodes/parsenodes.h    2006-03-03 00:43:08.000000000 +0100
+++ postgresql-8.1.3/src/include/nodes/nodes.h    2006-03-03 00:43:08.000000000 +0100

Sinon certaines personnes proposent de faire des vues de table mais je ne peut faire d'insertion ou d'update dans ces vues...


Merci pour vos réponses...

@ bientôt

Dernière modification par oracle2pgsql (10/04/2009 10:26:01)

Hors ligne

#2 10/04/2009 10:43:27

gleu
Administrateur

Re : Oracle to Postgresql - CREATE SYNONYM

Sinon certaines personnes proposent de faire des vues de table mais je ne peut faire d'insertion ou d'update dans ces vues...

Si, c'est possible avec le système des rules : voir http://docs.postgresql.fr/8.3/rules.html pour les détails.


Guillaume.

Hors ligne

#3 10/04/2009 10:55:05

oracle2pgsql
Membre

Re : Oracle to Postgresql - CREATE SYNONYM

Merci je vais regarder ça de près...

Hors ligne

#4 10/04/2009 14:19:07

oracle2pgsql
Membre

Re : Oracle to Postgresql - CREATE SYNONYM

Par contre je crois que ça ne va pas m'aider pour faire des alias / synonym de function ...

Hors ligne

#5 10/04/2009 15:29:03

gleu
Administrateur

Re : Oracle to Postgresql - CREATE SYNONYM

Non, en effet. Je vous dirais bien de recréer la même fonction sous un nouveau nom, ou de créer une fonction qui appelle l'autre fonction... mais cela montrerait certainement le peu de connaissance que j'ai des synonymes. Et surtout que je ne connais pas leur intérêt.


Guillaume.

Hors ligne

#6 10/04/2009 16:26:45

oracle2pgsql
Membre

Re : Oracle to Postgresql - CREATE SYNONYM

En faite tous ces synonym ont été créé j'ai l'impression pour donner accès à certain user de la base oracle aux functions, tables d'autres users : ex :
CREATE SYNONYM user_two.funtions_test FOR user_one.function_test;
CREATE SYNONYM user_three.funtions_test FOR user_one.function_test;

Un peu comme si sous Posgresql on voulait qu'un schema ai des alias vers les tables / functions / procédures... d'un autre schema...
dans mon cas tous les schemas ont des alias vers les functions d'un schema particulier sauf un donc je crois que je vais mettre toutes ces functions dans le schema public ;-)

Me voilà avec un nouveau problème par contre qui est la création de type "AS OBJECT" et "AS TABLE OF" qui n'est apparement pas pris en charge par Postgresql mais qui viendrait d'être pris en charge par la version entrepriseDB (http://forums.enterprisedb.com/posts/list/786.page)...
Je cherche encore ;-)

Merci pour votre aide en tout cas

Hors ligne

#7 10/04/2009 16:34:02

gleu
Administrateur

Re : Oracle to Postgresql - CREATE SYNONYM

Je dois être neuneu aujourd'hui smile

Toute table est un type dans PostgreSQL. Par exemple (je préviens, mon exemple est crétin smile ):

audreyjg=# create table t1 (id serial, contenusecret text, user_autorise text);
NOTICE:  CREATE TABLE will create implicit sequence "t1_id_seq1" for serial column "t1.id"
CREATE TABLE
audreyjg=# create table t2 (id integer, t t1);
CREATE TABLE
audreyjg=# \d t2
        Table « public.t2 »
 Colonne |  Type   | Modificateurs
---------+---------+---------------
 id      | integer |
 t       | t1      |

J'ai utilisé le type de ma table t1 comme type d'une des colonnes de ma table t2. Bon, c'est poussé à l'extrême, cela n'a aucun intérêt dans ce cadre. Mais j'aurais pu dire que ma fonction machin renvoyait le type t1. Bref, j'ai peut-être pas compris à quoi servait cette syntaxe smile


Guillaume.

Hors ligne

Pied de page des forums