Saya porting beberapa kode dari beberapa versi Sybase ke PostgreSQL. Ini adalah aplikasi C yang menggunakan pustaka klien Sybase. Pendekatan saya adalah menulis lapisan terjemahan yang menerjemahkan panggilan dbsqlexec()
ke PQexec()
(misalnya). Bagian itu sebagian besar berfungsi.
Tampaknya basis data Sybase diatur dengan cara case-sensitive (berkenaan dengan nama objek basis data). Misalnya, ada WIDGET
tabel dan widget
tabel. Sepertinya konvensi dalam aplikasi ini adalah bahwa semua huruf besar menunjukkan tabel data aktual, sedangkan nama huruf kecil digunakan sebagai tabel sementara ketika menjalankan beberapa pemrosesan.
Menurut 4.1 Lexical Structure , " Kata-kata kunci dan tanda pengenal yang tidak dikutip tidak peka huruf besar-kecil. " Saya tahu bahwa saya dapat menggandakan tanda kutip pengidentifikasi untuk menonaktifkan lipat otomatis ke huruf kecil, tetapi saya tidak ingin harus melakukannya secara manual melalui zillions garis kode yang menggunakan database ini.
Apakah ada cara untuk mengatur PostgreSQL untuk menonaktifkan lipat kasus otomatis ini untuk pengidentifikasi objek database?
Alternatif saya adalah menulis beberapa kode yang memeriksa setiap pernyataan SQL dan menempatkan tanda kutip ganda di setiap pengidentifikasi (yang bukan kata kunci).
select * from TaBlEnAmE
akan mereferensikan tabel yang sama dengan select * from tablename
atauselect * from TABLENAME
create table "tableName" (id integer primary key);
, lalu create table "tablename" (id integer primary key);
permintaan ini select * from TaBlEnAmE;
akan memilih dari "tablename", bukan dari "tableName". "Nama yang tidak dikutip selalu dilipat menjadi huruf kecil" .