[spip-dev] Portage PostgreSQL défectueux

Hello,

j'ai voulu clore les tickets ouverts sur le portage postgreSQL, mais je tombe sur un problème bien plus fondamental qui m'inquiète un peu.
En préambule, j'utilise http://bitnami.org/stack/mappstack comme environnement de test,
avec une version PostgreSQL 9.0.3

Je prends ici l'exemple de la table spip_articles.

Le point de blocage concerne les insertion en base et l'autoincrement.

Actuellement il est obtenu par une valeur par defaut
nextval('spip_articles_id_article_seq'::regclass)
sur id_article

Une requete insertion
sql_insertq('spip_articles',array('titre'=>'toto2')
marche bien, jusque là tout va bien

MAIS
sql_insertq('spip_articles',array('id_article'=>1,'titre'=>'toto2')
echoue elle sur une erreur
errcode: 1000 : currval of sequence "spip_articles_id_article_seq" is not yet defined in this session

De fait, la doc explique que currval n'est pas defini tant qu'on a pas fait un nextval, et comme ici id_article etait defini dans l'insertion,
le defaut ne s'est pas joué.

Donc je produit un patch ci-dessous pour retourner id_article si il est dans les donnees inserees, et currval sur une attribution automatique
Dans ce cas, mes deux insertions ci-dessus marchent bien séparemment.

Problème numéro 1 :
Si je fais
sql_insertq_multi('spip_articles',array(array('id_article'=>1,'titre'=>'toto'),array('id_article'=>2,'titre'=>'toto')));
je recupere le premier id_article, et non le second.. ça peut se contourner, et le retour sur le sql_insertq_multi n'est pas très grave

Mais beaucoup plus gênant :
Problème numéro 2 :
Si je fais plusieurs insertions mixées, nextval/curval n'est pas synchronisé :

J'ai poussé un peu plus loin le constat :
actuellement PostgreSQL est inutilisable en version 2.3 : le simple fait de créer une rubrique ou un article génère des erreurs SQL à l'affichage.
Il est impossible d'importer une base suite au problème décrit dans le mail ci-dessous (pour lequel il semble y avoir eu des changements liés à la version de PG)

Au vu de ces problèmes et des tickets ouverts depuis un an sur le portage PGSQL,
je pense qu'on devrait externaliser ce portage PG dans un plugin sur la zone, afin que ceux qui l'utilisent puissent corriger ce portage directement.
Ce pourrait être un plugin 'Portages SQL' avec dedans aussi ce qu'a commencé Gilles sur mysqli

Ça demandera juste un mécanisme particulier (un define ?) pour déclarer ces portages afin qu'ils soient pris en compte à l'installation.
Cédric

Bonsoir,

je serais volontiers partant pour une solution,
qui permette a un novice de reprendre les portages,
entamé il y a deux ans pour SQL Server, et surtout
vers un Oracle car je généralise ce SGBD dans ma collectivité.
Merci d'avance
YannX

je serais volontiers partant pour une solution,
qui permette a un novice de reprendre les portages,
entamé il y a deux ans pour SQL Server, et surtout
vers un Oracle car je généralise ce SGBD dans ma collectivité.

Je viens de poster sur la zone la tentative de portage de SPIP sur Oracle que j'avais commencée:

Si tu veux le poursuivre, moi je n'ai plus le temps de m'en occuper.

From: <cedric.morin@yterium.com>

Au vu de ces problèmes et des tickets ouverts depuis un an sur le portage PGSQL,
je pense qu'on devrait externaliser ce portage PG dans un plugin sur la zone, afin que ceux qui l'utilisent puissent corriger ce portage directement.

Mon expérience des portages est qu'on est fatalement conduit à intervenir sur le noyau pour récupérer en amont des infos manquantes au moment de l'aiguillage sur le serveur, où à l'inverse pour que le serveur communique une info qui était implicitement toujours la même avec les autres portages, et se révèle différente avec le nouveau portage. Cette solution est donc illusoire. Ce n'est pas en bottant en touche qu'on résoud des problèmes.

Committo,Ergo:Sum

Bonjour ESJ

grand merci pour cette avancée....

Et une réflexion suite aux remarques ci-dessous sur le portage :
- ne faudrait-il pas proposer deux niveaux d'accès bases de données,
  l'une pour la lecture des données de bases existantes (donc moins complète
!)
  et l'autre pour la gestion Spip complète....

Si on ouvrait simplement les plugins d'interface portée en mode "lecture"
cela permettrait déja de transformer SPIP en requeteur Web d'intégration
générale.

@+SPIP

"Committo,Ergo:sum" <esj@rezo.net> a écrit dans le message de news:
28B85533-A4CA-4021-B53D-EE008B1176FA@rezo.net...

je serais volontiers partant pour une solution,
qui permette a un novice de reprendre les portages,
entamé il y a deux ans pour SQL Server, et surtout
vers un Oracle car je généralise ce SGBD dans ma collectivité.

Je viens de poster sur la zone la tentative de portage de SPIP sur Oracle
que j'avais commencée:

Si tu veux le poursuivre, moi je n'ai plus le temps de m'en occuper.

From: <cedric.morin@yterium.com>

Au vu de ces problèmes et des tickets ouverts depuis un an sur le portage
PGSQL,
je pense qu'on devrait externaliser ce portage PG dans un plugin sur la
zone, afin que ceux qui l'utilisent puissent corriger ce portage
directement.

Mon expérience des portages est qu'on est fatalement conduit à intervenir
sur le noyau pour récupérer en amont des infos manquantes au moment de
l'aiguillage sur le serveur, où à l'inverse pour que le serveur communique
une info qui était implicitement toujours la même avec les autres portages,
et se révèle différente avec le nouveau portage. Cette solution est donc
illusoire. Ce n'est pas en bottant en touche qu'on résoud des problèmes.

Committo,Ergo:Sum

Les difficultés du portage ne recoupent pas cette dichotomie: Select est la requête la plus riche de SQL, à partir du moment où on réussit à la faire tourner à 100%, implémenter Insert et Update est rapide car tous les gros problèmes ont été perçus et résolus en s'attauqant à Select.

Committo,Ergo:Sum