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

#1 02/05/2012 11:24:46

ebs
Membre

pgsnap - Query failed: ERROR: function return row and query-specified

Bonjour,

Je souhaitais utiliser pgsnap afin d'avoir une vision globale et des stats sur ma base de données.
Cependant lorsque j'ai essayé de l'utiliser, j'ai eu les messages suivants:

$ /home/postgres/tools/pgsnap-0.7.0/pgsnap.php -a -o /tmp/pgsnap
Connecting...
Connecting to template1 database...
Adding some HTML files...
Getting Misc informations...
Getting General informations...
Getting Global Informations...
  pg_buffercache unavailable!
Getting Database Informations...
  pg_buffercache unavailable!
  pgstattuple unavailable!
  pgstattuple on indexes unavailable!
Getting Current Activities Informations...
Getting Statistical Informations...
Getting Tools Informations...
  pgPool unavailable!
Connecting to postgres database...
Adding some HTML files...
Getting Misc informations...
Getting General informations...
Getting Global Informations...
  pg_buffercache unavailable!
Getting Database Informations...
  pg_buffercache unavailable!
  pgstattuple unavailable!
  pgstattuple on indexes unavailable!
Getting Current Activities Informations...
Getting Statistical Informations...
Getting Tools Informations...
  pgPool unavailable!
Connecting to myDB database...
Adding some HTML files...
Getting Misc informations...
Getting General informations...
Getting Global Informations...
PHP Warning:  pg_query(): Query failed: ERROR:  function return row and query-specified return row do not match
DETAIL:  Returned row contains 8 attributes, but query expects 7. in /home/postgres/tools/pgsnap-0.7.0/lib/databasesincache.php on line 35
An error occured.

$ echo $?
0

Malheureusement en regardant un peu le code de databasesincache.php je n'ai pas bien compris ce qui clochait.
De plus c'est dommage que le script sorte avec un exit status 0 alors qu'il y a une erreur qui semble bien catchée.

J'aurai une autre petite question: est ce qu'on peut utiliser pgsnap sur une machine slave dans le cadre d'une réplication hot-standby replication ?

Merci d'avance pour votre aide smile

/Erwan


mon environnement - Debian 6:

$ dpkg -l | grep postgres
ii  postgresql-9.1                      9.1.3-2~bpo60+1              object-relational SQL database, version 9.1 server
ii  postgresql-client-9.1               9.1.3-2~bpo60+1              front-end programs for PostgreSQL 9.1
ii  postgresql-client-common            129~bpo60+1                  manager for multiple PostgreSQL client versions
ii  postgresql-common                   129~bpo60+1                  PostgreSQL database-cluster manager
ii  postgresql-contrib-9.1              9.1.3-2~bpo60+1              additional facilities for PostgreSQL
ii  postgresql-doc-9.1                  9.1.3-2~bpo60+1              documentation for the PostgreSQL database management system

$ dpkg -l | grep php
ii  php5-cli                            5.3.3-7+squeeze8             command-line interpreter for the php5 scripting language
ii  php5-common                         5.3.3-7+squeeze8             Common files for packages built from the php5 source
ii  php5-pgsql                          5.3.3-7+squeeze8             PostgreSQL module for php5
ii  php5-suhosin                        0.9.32.1-1                   advanced protection module for php5

pgsnap v0.7

Hors ligne

#2 02/05/2012 21:43:13

gleu
Administrateur

Re : pgsnap - Query failed: ERROR: function return row and query-specified

La requête est un peu étonnante au niveau de la jointure avec pg_tablespace. Si vous supprimez la jointure sur pg_tablespace, le problème est-il corrigé ?


Guillaume.

Hors ligne

#3 03/05/2012 11:00:36

ebs
Membre

Re : pgsnap - Query failed: ERROR: function return row and query-specified

bonjour et merci pour ce retour !

donc effectivement la requête qui pose problème est bien la suivante:

$query = "SELECT
  pg_get_userbyid(datdba) AS dba,
  datname,
  pg_database_size(reldatabase) AS size,
  count(*) AS buffers
FROM pg_buffercache, pg_database, pg_tablespace
WHERE reldatabase=pg_database.oid
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3";

mais en retirant la composante avec pg_tablespace j'ai malheureusement le même souci sad

Hors ligne

#4 06/05/2012 17:02:40

gleu
Administrateur

Re : pgsnap - Query failed: ERROR: function return row and query-specified

Je commence à me demander si le problème ne vient pas de pg_buffercache. Pouvez-vous faire un simple "SELECT count(*) FROM pg_buffercache" ? pg_buffercache étant une vue qui fait appel à une procédure stockée, cela expliquerait ce message étonnant.


Guillaume.

Hors ligne

#5 09/05/2012 11:54:04

ebs
Membre

Re : pgsnap - Query failed: ERROR: function return row and query-specified

vous avez raison:

# SELECT count(*) FROM pg_buffercache;
ERROR:  function return row and query-specified return row do not match
DÉTAIL : Returned row contains 8 attributes, but query expects 7.

Hors ligne

#6 09/05/2012 13:31:12

Marc Cousin
Membre

Re : pgsnap - Query failed: ERROR: function return row and query-specified

Ça ressemble à une ancienne vue pg_buffercache qui appellerait la nouvelle version de la fonction. Ça ne serait pas une base migrée d'une ancienne version ?


Marc.

Hors ligne

#7 09/05/2012 13:58:59

ebs
Membre

Re : pgsnap - Query failed: ERROR: function return row and query-specified

après vérification il semble que ce soit le cas... la base a été créée sous une 8.3.
du coup cette vue n'a plus de sens.

Hors ligne

#8 09/05/2012 14:49:22

gleu
Administrateur

Re : pgsnap - Query failed: ERROR: function return row and query-specified

Désinstaller pg_buffercache, puis réinstaller-le, ça devrait corriger le problème.

Ça me fait penser qu'il faut que je mette à jour ce programme, vu que la beta 1 de PostgreSQL 9.2 va bientôt sortir.


Guillaume.

Hors ligne

#9 09/05/2012 16:11:37

ebs
Membre

Re : pgsnap - Query failed: ERROR: function return row and query-specified

effectivement après une réinstallation de l'extension pg_buffercache tout va mieux. elles avaient bien été installées avant la migration vers la 9.1 d'où le souci.

merci pour vos retours en tout cas smile

Hors ligne

Pied de page des forums