[gull] pgsql...aaaarh

Cedric BRINER briner at infomaniak.ch
Thu Jun 16 19:46:02 CEST 2005


> > DROP TABLE test;
> > DROP TABLE new_test;
> 
> suivant la version de PostgreSQL il faut aussi supprimer les séquences
> (pas dans les versions récentes à ma connaissance).
je ne savais pas. En tout cas, ca se fait de maniere automatique avec la version 8 ! Mais c'est toujours bon a savoir.

> > CREATE TABLE test (id serial NOT NULL UNIQUE, nom varchar(32));
> 
> > SELECT * from test_id_seq ;
> > SELECT * from new_test_id_seq ;
> > --- est-ce normal d'avoir une difference pour la colonne ``log_cnt''
> 
> désolé, je ne vois pas ce que c'est.  Extrait ?
pfff ;)) j'avais tout ecrit  en PGSQL avec des commmentaire en ``---'' pour faire du copier coller...
alors l'extrait c'est :

test=# SELECT * from test_id_seq ;
 sequence_name | last_value | increment_by |      max_value      | min_value | cache_value | log_cnt | is_cycled | is_called
---------------+------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------
 test_id_seq   |          3 |            1 | 9223372036854775807 |         1 |           1 |      31 | f         | t
(1 row)

test=# SELECT * from new_test_id_seq ;
  sequence_name  | last_value | increment_by |      max_value      | min_value | cache_value | log_cnt | is_cycled | is_called
-----------------+------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------
 new_test_id_seq |          3 |            1 | 9223372036854775807 |         1 |           1 |       0 | f         | t
(1 row)

log_cnt peut que c'est le log(count)??


---snip---

> > ---      En fait, je me demandais si il n'y aurait-il moyen pas moyen depuis pypgsql (python postgresql)
> > ---      de recuperer une sorte de description de la DB et de savoir des lors que >test_id_key< est une 
> > ---      contrainte d'unicite sur le couple ( table:>test<, colonne:>id< )???
> 
> oui, la base s'auto-décrit:
> 
>  Schéma des métadata, comment trouver les informations dans les métadata 
>  Méthode standard SQL: Information Schema
>     /usr/share/doc/postgresql-doc/html/information-schema.html 
excellent !
je vais y jeter un oeil

---snip---

> > DROP SEQUENCE new_test_id_seq ;
> > --- ERROR:  cannot drop sequence new_test_id_seq because table test column id requires it
> > --- HINT:  You may drop table test column id instead.
> > --- et la j'ai une erreur de pgsql... table >test< column >id< requires it ??
> 
> Alors, ça, on dirait un bug.  Faire un exemple et envoyer à la liste de
> développement.
ok envoye !

> > 5) si m'a base est en prod, je devrais faire ce genre de truc entre un begin commit ?
> 
> PostgreSQL -- du moins quand j'avais vérifié -- ne transactionne pas les
> méta-opérations (CREATE TABLE, etc), au contraire d'Oracle par exemple.
> Donc activer les transactions ne sert pas à grand chose dans ce cas.
> Par contre, il faudrait rendre atomique le DROP test; ALTER TABLE test_
> ...
> 
> Malheureusement à ma connaissance c'est impossible avec PostgreSQL. Il y aura donc une
> fenêtre de vulnérabilité où d'autres backend ne verront plus de table
> test.
ennuyeux tout ca.. je vais verifier..
en tout cas le code:
DROP TABLE test;
DROP TABLE new_test;
CREATE TABLE test (id serial NOT NULL UNIQUE, nom varchar(32));
INSERT INTO test ("nom") values ('cedric');
INSERT INTO test ("nom") values ('felix');
INSERT INTO test ("nom") values ('julien');

CREATE TABLE new_test (id serial NOT NULL UNIQUE, nom varchar(32));
INSERT INTO new_test SELECT * FROM test;

SELECT setval('new_test_id_seq',3);

BEGIN;
DROP TABLE test;
ALTER TABLE new_test RENAME TO test;
ABORT;

a l'air de parfaitemnt fonctionner. Si ``ALTER TABLE new_test RENAME TO test;'' travaille sur les meta-donnees..alors postgres est peut-etre capable de faire des operations atomique sur les metadonnees.!

 

> > P.-S. desole pour les caractere accentues qui se transforme dans mon mutt en ``?''. Probleme
> > de conf. peut-etre ?
> 
> export LC_CTYPE=fr_CH.ISO8859-1  # et avoir généré cette locale avec dpkg-reconfigure locales
naon, mais j'ai essaye le LC_CTYPE=fr_CH.UTF-8 et ca marche du tonnerre... bbbbbrrrroum ! enfin..

Ced.
-- 

Cedric BRINER



More information about the gull mailing list