2017-10-18 6 views
0

J'ai un problème avec l'extension ltree sur Postgresql 9.6.5Erreur de syntaxe dans la requête en utilisant ltree sur Postgresql 9.6.5

J'ai une table appelée catégorie avec la LDD suivante (je l'ai un peu simplifié):

CREATE TABLE dictionary.category 
(
    id serial not null constraint category_pkey primary key, 
    name text not null, 
    parent_id integer constraint category_parent_id_fkey references dictionary.category 
); 

Après la création de l'extension ltree:

CREATE EXTENSION ltree; 

Je suis en train de faire quelques exemple de requête:

SELECT id, text2ltree(name) FROM dictionary.category; 

ou

SELECT id, name::ltree FROM dictionary.category; 

ou échapper le nom de la colonne

SELECT id, text2ltree("name") FROM dictionary.category; 

Et il me donne:

ERROR: syntax error at position 12 

tout le temps

Mais lorsque je tente:

SELECT id, text2ltree('a.b.v') FROM dictionary.category; 

ou

SELECT id, text2ltree(id::text) FROM dictionary.category 

il me donne des résultats corrects.

Je suppose qu'il est lié au fait que nom est un mot-clé réservé. Mais pourquoi s'échapper ne fonctionne pas? Aussi, je vais renommer une colonne à quelque chose comme abcd il me donne quand même une erreur de syntaxe.

Merci tout le monde à l'avance!

Répondre

0

Répondre à ma propre question. Il semble que ces messages d'erreur ne sont pas liés à une requête elle-même. Il est lié à un texte qui peut être contenu dans ltree path. Il semble que le chemin de l'arbre ne permette que des caractères alfanumériques et rien de plus.

SELECT id, text2ltree(regexp_replace(name, '[^[:alpha:]]', '', 'g')) FROM dictionary.category; 

Retourne les résultats corrects.

Quoi qu'il en soit, le message d'erreur est très trompeur.