Je suis en train d'essayer d'optimiser une requête (postgis) qui
prend plusieurs semaines de temps CPU... Je suis tombé sur un truc
bizarre qui apparaît plusieurs fois dans les fonctions PL/pgsql :
pre = '';
pre est ici déclaré comme un varchar. Le problème est simple : les
affectations sont censées être faites à l'aide de l'opérateur ':='.
Pourquoi certaines sont-elles faites à l'aide de '=' et non ':=' ?
Quelle est la subtile différence entre les deux notations ?
Je suis un peu perdu parce que ni le site officiel de pgsql, ni
l'ouvrage de référence que j'ai devant moi, ni même Google ne parle
d'affectation à l'aide du seul signe '='. Pourtant, en tant que
telle, la fonction tourne et le serveur ne se plaint pas...
Cordialement,
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Sebastien Lardiere
JKB a écrit :
Bonjour à tous,
Je suis en train d'essayer d'optimiser une requête (postgis) qui prend plusieurs semaines de temps CPU... Je suis tombé sur un truc bizarre qui apparaît plusieurs fois dans les fonctions PL/pgsql :
pre = '';
pre est ici déclaré comme un varchar. Le problème est simple : les affectations sont censées être faites à l'aide de l'opérateur ':='. Pourquoi certaines sont-elles faites à l'aide de '=' et non ':=' ? Quelle est la subtile différence entre les deux notations ?
Je suis un peu perdu parce que ni le site officiel de pgsql, ni l'ouvrage de référence que j'ai devant moi, ni même Google ne parle d'affectation à l'aide du seul signe '='. Pourtant, en tant que telle, la fonction tourne et le serveur ne se plaint pas...
Bonjour,
C'est la même chose.
En fait, plpgsql fait un select pour réaliser l'affectation ( select pre = '' ).
Les opérateurs = et := sont analysés de la même façon, voir src/pl/plpgsql/src/scan.l dans les sources de PostgreSQL.
Je ne vois donc pas de matiere à optimiser ici.
Cordialement,
-- Sébastien
JKB a écrit :
Bonjour à tous,
Je suis en train d'essayer d'optimiser une requête (postgis) qui
prend plusieurs semaines de temps CPU... Je suis tombé sur un truc
bizarre qui apparaît plusieurs fois dans les fonctions PL/pgsql :
pre = '';
pre est ici déclaré comme un varchar. Le problème est simple : les
affectations sont censées être faites à l'aide de l'opérateur ':='.
Pourquoi certaines sont-elles faites à l'aide de '=' et non ':=' ?
Quelle est la subtile différence entre les deux notations ?
Je suis un peu perdu parce que ni le site officiel de pgsql, ni
l'ouvrage de référence que j'ai devant moi, ni même Google ne parle
d'affectation à l'aide du seul signe '='. Pourtant, en tant que
telle, la fonction tourne et le serveur ne se plaint pas...
Bonjour,
C'est la même chose.
En fait, plpgsql fait un select pour réaliser l'affectation ( select pre
= '' ).
Les opérateurs = et := sont analysés de la même façon, voir
src/pl/plpgsql/src/scan.l dans les sources de PostgreSQL.
Je suis en train d'essayer d'optimiser une requête (postgis) qui prend plusieurs semaines de temps CPU... Je suis tombé sur un truc bizarre qui apparaît plusieurs fois dans les fonctions PL/pgsql :
pre = '';
pre est ici déclaré comme un varchar. Le problème est simple : les affectations sont censées être faites à l'aide de l'opérateur ':='. Pourquoi certaines sont-elles faites à l'aide de '=' et non ':=' ? Quelle est la subtile différence entre les deux notations ?
Je suis un peu perdu parce que ni le site officiel de pgsql, ni l'ouvrage de référence que j'ai devant moi, ni même Google ne parle d'affectation à l'aide du seul signe '='. Pourtant, en tant que telle, la fonction tourne et le serveur ne se plaint pas...
Bonjour,
C'est la même chose.
En fait, plpgsql fait un select pour réaliser l'affectation ( select pre = '' ).
Les opérateurs = et := sont analysés de la même façon, voir src/pl/plpgsql/src/scan.l dans les sources de PostgreSQL.
Je ne vois donc pas de matiere à optimiser ici.
Cordialement,
-- Sébastien
JKB
Le 28-02-2008, à propos de Re: [PL/pgsql] Différence entre '=' et ':=', Sebastien Lardiere écrivait dans fr.comp.applications.sgbd :
JKB a écrit :
Bonjour à tous,
Je suis en train d'essayer d'optimiser une requête (postgis) qui prend plusieurs semaines de temps CPU... Je suis tombé sur un truc bizarre qui apparaît plusieurs fois dans les fonctions PL/pgsql :
pre = '';
pre est ici déclaré comme un varchar. Le problème est simple : les affectations sont censées être faites à l'aide de l'opérateur ':='. Pourquoi certaines sont-elles faites à l'aide de '=' et non ':=' ? Quelle est la subtile différence entre les deux notations ?
Je suis un peu perdu parce que ni le site officiel de pgsql, ni l'ouvrage de référence que j'ai devant moi, ni même Google ne parle d'affectation à l'aide du seul signe '='. Pourtant, en tant que telle, la fonction tourne et le serveur ne se plaint pas...
Bonjour,
C'est la même chose.
En fait, plpgsql fait un select pour réaliser l'affectation ( select pre = '' ).
Les opérateurs = et := sont analysés de la même façon, voir src/pl/plpgsql/src/scan.l dans les sources de PostgreSQL.
Je ne vois donc pas de matiere à optimiser ici.
Disons que pour optimiser un bout de code, il vaut mieux le comprendre et si le type qui a programmé ces fonctions a utilisé de temps en temps '=' et de temps en temps ':=', il y avait pour moi une différence entre les deux. Si c'est la même chose, cela simplifie mon problème. Par contre, il est un peu dommageable que cela ne figure pas dans les doc où il est indiqué plusieurs fois qu'il faut _toujours_ utiliser ':='...
Merci,
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Le 28-02-2008, à propos de
Re: [PL/pgsql] Différence entre '=' et ':=',
Sebastien Lardiere écrivait dans fr.comp.applications.sgbd :
JKB a écrit :
Bonjour à tous,
Je suis en train d'essayer d'optimiser une requête (postgis) qui
prend plusieurs semaines de temps CPU... Je suis tombé sur un truc
bizarre qui apparaît plusieurs fois dans les fonctions PL/pgsql :
pre = '';
pre est ici déclaré comme un varchar. Le problème est simple : les
affectations sont censées être faites à l'aide de l'opérateur ':='.
Pourquoi certaines sont-elles faites à l'aide de '=' et non ':=' ?
Quelle est la subtile différence entre les deux notations ?
Je suis un peu perdu parce que ni le site officiel de pgsql, ni
l'ouvrage de référence que j'ai devant moi, ni même Google ne parle
d'affectation à l'aide du seul signe '='. Pourtant, en tant que
telle, la fonction tourne et le serveur ne se plaint pas...
Bonjour,
C'est la même chose.
En fait, plpgsql fait un select pour réaliser l'affectation ( select pre
= '' ).
Les opérateurs = et := sont analysés de la même façon, voir
src/pl/plpgsql/src/scan.l dans les sources de PostgreSQL.
Je ne vois donc pas de matiere à optimiser ici.
Disons que pour optimiser un bout de code, il vaut mieux le
comprendre et si le type qui a programmé ces fonctions a utilisé de
temps en temps '=' et de temps en temps ':=', il y avait pour moi
une différence entre les deux. Si c'est la même chose, cela
simplifie mon problème. Par contre, il est un peu dommageable que
cela ne figure pas dans les doc où il est indiqué plusieurs fois
qu'il faut _toujours_ utiliser ':='...
Merci,
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Le 28-02-2008, à propos de Re: [PL/pgsql] Différence entre '=' et ':=', Sebastien Lardiere écrivait dans fr.comp.applications.sgbd :
JKB a écrit :
Bonjour à tous,
Je suis en train d'essayer d'optimiser une requête (postgis) qui prend plusieurs semaines de temps CPU... Je suis tombé sur un truc bizarre qui apparaît plusieurs fois dans les fonctions PL/pgsql :
pre = '';
pre est ici déclaré comme un varchar. Le problème est simple : les affectations sont censées être faites à l'aide de l'opérateur ':='. Pourquoi certaines sont-elles faites à l'aide de '=' et non ':=' ? Quelle est la subtile différence entre les deux notations ?
Je suis un peu perdu parce que ni le site officiel de pgsql, ni l'ouvrage de référence que j'ai devant moi, ni même Google ne parle d'affectation à l'aide du seul signe '='. Pourtant, en tant que telle, la fonction tourne et le serveur ne se plaint pas...
Bonjour,
C'est la même chose.
En fait, plpgsql fait un select pour réaliser l'affectation ( select pre = '' ).
Les opérateurs = et := sont analysés de la même façon, voir src/pl/plpgsql/src/scan.l dans les sources de PostgreSQL.
Je ne vois donc pas de matiere à optimiser ici.
Disons que pour optimiser un bout de code, il vaut mieux le comprendre et si le type qui a programmé ces fonctions a utilisé de temps en temps '=' et de temps en temps ':=', il y avait pour moi une différence entre les deux. Si c'est la même chose, cela simplifie mon problème. Par contre, il est un peu dommageable que cela ne figure pas dans les doc où il est indiqué plusieurs fois qu'il faut _toujours_ utiliser ':='...
Merci,
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
William Marie
"JKB" a écrit dans le message de news:
Disons que pour optimiser un bout de code, il vaut mieux le comprendre et si le type qui a programmé ces fonctions a utilisé de temps en temps '=' et de temps en temps ':=', il y avait pour moi une différence entre les deux. Si c'est la même chose, cela simplifie mon problème. Par contre, il est un peu dommageable que cela ne figure pas dans les doc où il est indiqué plusieurs fois qu'il faut _toujours_ utiliser ':='...
Si ma mémoire est bonne l'opérateur ':=' est l'opérateur d'affectation en Pascal et '=' l'opérateur (booléen) d'égalité. Alors que c'est respectivement '=' et '==' en C. C'est bien ça ? -- =================================== William Marie Attention antiSpam remplacer trapellun.invalid par free.fr Web : http://wmarie.free.fr http://www.pandemonium.dnsalias.org (site expérimental) ====================================
"JKB" <knatschke@koenigsberg.fr> a écrit dans le message de news:
slrnfse23p.b3a.knatschke@fermat.systella.fr
Disons que pour optimiser un bout de code, il vaut mieux le
comprendre et si le type qui a programmé ces fonctions a utilisé de
temps en temps '=' et de temps en temps ':=', il y avait pour moi
une différence entre les deux. Si c'est la même chose, cela
simplifie mon problème. Par contre, il est un peu dommageable que
cela ne figure pas dans les doc où il est indiqué plusieurs fois
qu'il faut _toujours_ utiliser ':='...
Si ma mémoire est bonne l'opérateur ':=' est l'opérateur d'affectation en
Pascal et '=' l'opérateur (booléen) d'égalité. Alors que c'est
respectivement '=' et '==' en C. C'est bien ça ?
--
=================================== William Marie
Attention antiSpam remplacer trapellun.invalid
par free.fr
Web : http://wmarie.free.fr
http://www.pandemonium.dnsalias.org (site expérimental)
====================================
Disons que pour optimiser un bout de code, il vaut mieux le comprendre et si le type qui a programmé ces fonctions a utilisé de temps en temps '=' et de temps en temps ':=', il y avait pour moi une différence entre les deux. Si c'est la même chose, cela simplifie mon problème. Par contre, il est un peu dommageable que cela ne figure pas dans les doc où il est indiqué plusieurs fois qu'il faut _toujours_ utiliser ':='...
Si ma mémoire est bonne l'opérateur ':=' est l'opérateur d'affectation en Pascal et '=' l'opérateur (booléen) d'égalité. Alors que c'est respectivement '=' et '==' en C. C'est bien ça ? -- =================================== William Marie Attention antiSpam remplacer trapellun.invalid par free.fr Web : http://wmarie.free.fr http://www.pandemonium.dnsalias.org (site expérimental) ====================================
JKB
Le 28-02-2008, à propos de Re: [PL/pgsql] Différence entre '=' et ':=', William Marie écrivait dans fr.comp.applications.sgbd :
"JKB" a écrit dans le message de news:
Disons que pour optimiser un bout de code, il vaut mieux le comprendre et si le type qui a programmé ces fonctions a utilisé de temps en temps '=' et de temps en temps ':=', il y avait pour moi une différence entre les deux. Si c'est la même chose, cela simplifie mon problème. Par contre, il est un peu dommageable que cela ne figure pas dans les doc où il est indiqué plusieurs fois qu'il faut _toujours_ utiliser ':='...
Si ma mémoire est bonne l'opérateur ':=' est l'opérateur d'affectation en Pascal et '=' l'opérateur (booléen) d'égalité. Alors que c'est respectivement '=' et '==' en C. C'est bien ça ?
Oui, et ? ;-)
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Le 28-02-2008, à propos de
Re: [PL/pgsql] Différence entre '=' et ':=',
William Marie écrivait dans fr.comp.applications.sgbd :
"JKB" <knatschke@koenigsberg.fr> a écrit dans le message de news:
slrnfse23p.b3a.knatschke@fermat.systella.fr
Disons que pour optimiser un bout de code, il vaut mieux le
comprendre et si le type qui a programmé ces fonctions a utilisé de
temps en temps '=' et de temps en temps ':=', il y avait pour moi
une différence entre les deux. Si c'est la même chose, cela
simplifie mon problème. Par contre, il est un peu dommageable que
cela ne figure pas dans les doc où il est indiqué plusieurs fois
qu'il faut _toujours_ utiliser ':='...
Si ma mémoire est bonne l'opérateur ':=' est l'opérateur d'affectation en
Pascal et '=' l'opérateur (booléen) d'égalité. Alors que c'est
respectivement '=' et '==' en C. C'est bien ça ?
Oui, et ? ;-)
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Le 28-02-2008, à propos de Re: [PL/pgsql] Différence entre '=' et ':=', William Marie écrivait dans fr.comp.applications.sgbd :
"JKB" a écrit dans le message de news:
Disons que pour optimiser un bout de code, il vaut mieux le comprendre et si le type qui a programmé ces fonctions a utilisé de temps en temps '=' et de temps en temps ':=', il y avait pour moi une différence entre les deux. Si c'est la même chose, cela simplifie mon problème. Par contre, il est un peu dommageable que cela ne figure pas dans les doc où il est indiqué plusieurs fois qu'il faut _toujours_ utiliser ':='...
Si ma mémoire est bonne l'opérateur ':=' est l'opérateur d'affectation en Pascal et '=' l'opérateur (booléen) d'égalité. Alors que c'est respectivement '=' et '==' en C. C'est bien ça ?
Oui, et ? ;-)
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
William Marie
"JKB" a écrit dans le message de news:
Oui, et ? ;-)
Peut-être que le codeur de pgsql est un nostalgique du Pascal (jeunesse !) -- =================================== William Marie Attention antiSpam remplacer trapellun.invalid par free.fr Web : http://wmarie.free.fr http://www.pandemonium.dnsalias.org (site expérimental) ====================================
"JKB" <knatschke@koenigsberg.fr> a écrit dans le message de news:
slrnfsffei.b3a.knatschke@fermat.systella.fr
Oui, et ? ;-)
Peut-être que le codeur de pgsql est un nostalgique du Pascal (jeunesse
!)
--
=================================== William Marie
Attention antiSpam remplacer trapellun.invalid
par free.fr
Web : http://wmarie.free.fr
http://www.pandemonium.dnsalias.org (site expérimental)
====================================
Peut-être que le codeur de pgsql est un nostalgique du Pascal (jeunesse !) -- =================================== William Marie Attention antiSpam remplacer trapellun.invalid par free.fr Web : http://wmarie.free.fr http://www.pandemonium.dnsalias.org (site expérimental) ====================================