Я переношу якийсь код з якоїсь версії 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 "Імена без котирування завжди складаються в малі регістри" .