Sto portando un po 'di codice da una versione di Sybase a PostgreSQL. Questa è un'applicazione C che utilizza la libreria client Sybase. Il mio approccio è quello di scrivere un livello di traduzione che traduca le chiamate dbsqlexec()
a PQexec()
(ad esempio). Quella parte funziona principalmente.
Sembra che il database Sybase sia impostato con distinzione tra maiuscole e minuscole (rispetto ai nomi degli oggetti del database). Ad esempio, c'è sia una WIDGET
tabella che una widget
tabella. Sembra che la convenzione in questa applicazione sia che i nomi in maiuscolo indicano le tabelle dei dati effettivi, mentre i nomi in minuscolo vengono utilizzati come tabelle temporanee quando si esegue l'elaborazione.
Secondo la Struttura lessicale 4.1 , " Le parole chiave e gli identificatori non quotati non fanno distinzione tra maiuscole e minuscole " . So che posso raddoppiare gli identificatori per disabilitare il pieghevole automatico in minuscolo, ma non voglio farlo manualmente attraverso i miliardi di righe di codice che utilizza questo database.
Esiste un modo per impostare PostgreSQL per disabilitare la piegatura automatica di maiuscole e minuscole per gli identificatori di oggetti del database?
La mia alternativa sarà quella di scrivere del codice che esamina ogni istruzione SQL e mette virgolette doppie attorno a ogni identificatore (che non è una parola chiave).
select * from TaBlEnAmE
farà riferimento alla stessa tabella di select * from tablename
oselect * from TABLENAME
create table "tableName" (id integer primary key);
, e quindi create table "tablename" (id integer primary key);
questa query select * from TaBlEnAmE;
selezionerà da "tablename", non da "tableName". "I nomi non quotati vengono sempre piegati in minuscolo" .