Je porte du code d'une version de Sybase vers PostgreSQL. Il s'agit d'une application C qui utilise la bibliothèque client Sybase. Mon approche consiste à écrire une couche de traduction qui traduit les appels dbsqlexec()
vers PQexec()
(par exemple). Cette partie fonctionne principalement.
Il semble que la base de données Sybase soit configurée en respectant la casse (en ce qui concerne les noms d'objets de la base de données). Par exemple, il y a à la fois une WIDGET
table et une widget
table. Il semble que la convention dans cette application est que les noms en majuscules indiquent les tables de données réelles, tandis que les noms en minuscules sont utilisés comme tables temporaires lors de l'exécution de certains traitements.
Selon 4.1 Structure lexicale , «les mots clés et les identifiants sans guillemets ne respectent pas la casse. » Je sais que je peux citer des identifiants pour désactiver le pliage automatique en minuscules, mais je ne veux pas avoir à le faire manuellement à travers les millions de lignes de code qui utilise cette base de données.
Existe-t-il un moyen de configurer PostgreSQL pour désactiver ce pliage automatique des cas pour les identificateurs d'objets de base de données?
Mon alternative sera d'écrire du code qui examine chaque instruction SQL et met des guillemets autour de chaque identifiant (qui n'est pas un mot-clé).
select * from TaBlEnAmE
référencera la même table que select * from tablename
ouselect * from TABLENAME
create table "tableName" (id integer primary key);
, create table "tablename" (id integer primary key);
puis cette requête select * from TaBlEnAmE;
sélectionnera à partir de "nom de table", pas de "nom de table". "Les noms sans guillemets sont toujours pliés en minuscules" .