一部のコードを一部のバージョンのSybaseからPostgreSQLに移植しています。これは、Sybaseクライアントライブラリを使用するCアプリケーションです。私のアプローチは、呼び出し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の」から「テーブル名」から選択します。「引用符で囲まれていない名前は常に小文字に変換されます」。