Я переношу якийсь код з якоїсь версії Sybase до PostgreSQL. Це програма C, яка використовує клієнтську бібліотеку Sybase. Мій підхід полягає в тому, щоб написати шар перекладу, який переводить дзвінки dbsqlexec()
в PQexec()
(наприклад). Ця частина в основному працює.
Здається, що база даних Sybase створена в залежності від регістру (стосовно імен об'єктів бази даних). Наприклад, є і WIDGET
стіл, і widget
стіл. Схоже, умова в цій програмі полягає в тому, що великі імена вказують на фактичні таблиці даних, тоді як малі імена використовуються як тимчасові таблиці при виконанні деякої обробки.
Згідно з 4.1 Лексичною структурою , " Ключові слова та котируються ідентифікатори нечутливі до регістру ". Я знаю, що можу подвоїти цитування ідентифікаторів, щоб відключити автоматичне складання в малі регістри, але мені не хочеться робити це вручну через мільйони рядків коду, який використовує цю базу даних.
Чи є спосіб встановити PostgreSQL для відключення цього автоматичного складання корпусу для ідентифікаторів об'єктів бази даних?
Моєю альтернативою буде написання коду, який вивчає кожен оператор SQL і ставить подвійні лапки навколо кожного ідентифікатора (це не ключове слово).
select * from TaBlEnAmE
буде посилатися на ту саму таблицю, що select * from tablename
і наselect * from TABLENAME
create table "tableName" (id integer primary key);
, і тоді create table "tablename" (id integer primary key);
цей запит select * from TaBlEnAmE;
буде обраний із "tablename", а не з "tableName". Msgstr "Імена без котирування завжди складаються в малі регістри" .