Estoy transfiriendo un código de alguna versión de Sybase a PostgreSQL. Esta es una aplicación C que utiliza la biblioteca de cliente Sybase. Mi enfoque es escribir una capa de traducción que traduzca las llamadas dbsqlexec()
a PQexec()
(por ejemplo). Esa parte está trabajando principalmente.
Parece que la base de datos Sybase está configurada en mayúsculas y minúsculas (con respecto a los nombres de los objetos de la base de datos). Por ejemplo, hay tanto una WIDGET
tabla como una widget
tabla. Parece que la convención en esta aplicación es que los nombres en mayúsculas indican las tablas de datos reales, mientras que los nombres en minúsculas se usan como tablas temporales cuando se ejecuta algún procesamiento.
De acuerdo con la Estructura léxica 4.1 , " Las palabras clave y los identificadores sin comillas no distinguen entre mayúsculas y minúsculas " . Sé que puedo hacer comillas dobles para deshabilitar el plegado automático en minúsculas, pero no quiero tener que hacerlo manualmente a través de los miles de millones de líneas. de código que usa esta base de datos.
¿Hay alguna manera de configurar PostgreSQL para deshabilitar este plegado automático de mayúsculas y minúsculas para los identificadores de objetos de la base de datos?
Mi alternativa será escribir un código que examine cada instrucción SQL y ponga comillas dobles alrededor de cada identificador (que no es una palabra clave).
select * from TaBlEnAmE
hará referencia a la misma tabla que select * from tablename
oselect * from TABLENAME
create table "tableName" (id integer primary key);
, y luego create table "tablename" (id integer primary key);
esta consulta select * from TaBlEnAmE;
seleccionará de "nombre de tabla", no de "nombre de tabla". "Los nombres sin comillas siempre están doblados a minúsculas" .