Bug Report
IvorySQL Version
select version();
version
----------------------------------------------------------------------------------------------------------------------
PostgreSQL 17.4 (IvorySQL 4.4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
(1 row)
OS Version (uname -a)
uname -a
Linux synchdb 5.15.0-134-generic #145-Ubuntu SMP Wed Feb 12 20:08:39 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Configuration options ( config.status --config )
using all default configuration
Current Behavior
after a successful switch of ivorysql.compatible_mode from 'pg' to 'oracle', the create command with oracle data type will fail if we have executed and failed a create table command that contains oracle data types before the switch.
Expected behavior/code
after a successful switch of ivorysql.compatible_mode from 'pg' to 'oracle' (via the SET command), the create command with oracle data type shall succeed instead of fail.
Step to reproduce
- login with postgresql port number. This causes ivorysql.compatible_mode=pg as default
- Once logged in, I ran a
CREATE TABLE clause that contains Oracle data type columns, which is expected to fail due to missing oracle data type.
CREATE TABLE IF NOT EXISTS testing ( id numeric NOT NULL DEFAULT NULL , binary_double_col binary_double DEFAULT NULL , binary_float_col binary_float DEFAULT NULL , float_col real DEFAULT NULL , number_col number (10, 2) DEFAULT NULL , long_col long DEFAULT NULL , date_col date DEFAULT NULL , interval_ds_col interval day to second DEFAULT NULL , interval_ym_col interval year to month DEFAULT NULL , timestamp_col timestamp DEFAULT NULL , timestamp_tz_col timestamp with time zone DEFAULT NULL , timestamp_ltz_col timestamp with time zone DEFAULT NULL , char_col char (10) DEFAULT NULL , nchar_col char (10) DEFAULT NULL , nvarchar2_col varchar (50) DEFAULT NULL , varchar_col varchar2 (50) DEFAULT NULL , varchar2_col varchar2 (50) DEFAULT NULL , raw_col raw (100) DEFAULT NULL , bfile_col text DEFAULT NULL , blob_col bytea DEFAULT NULL , clob_col text DEFAULT NULL , nclob_col text DEFAULT NULL , rowid_col text DEFAULT NULL , urowid_col text DEFAULT NULL , PRIMARY KEY(ID));
ERROR: type "binary_double" does not exist
LINE 1: ...numeric NOT NULL DEFAULT NULL , binary_double_col binary_dou...
^
show ivorysql.compatible_mode;
ivorysql.compatible_mode
--------------------------
pg
(1 row)
- Once failed, I realized the compatible_mode is wrong, so I ran the SET command to change it
postgres=# set ivorysql.compatible_mode=oracle;
SET
- After the set, I ran the same query again in which I expect to succeed.
CREATE TABLE IF NOT EXISTS testing ( id numeric NOT NULL DEFAULT NULL , binary_double_col binary_double DEFAULT NULL , binary_float_col binary_float DEFAULT NULL , float_col real DEFAULT NULL , number_col number (10, 2) DEFAULT NULL , long_col long DEFAULT NULL , date_col date DEFAULT NULL , interval_ds_col interval day to second DEFAULT NULL , interval_ym_col interval year to month DEFAULT NULL , timestamp_col timestamp DEFAULT NULL , timestamp_tz_col timestamp with time zone DEFAULT NULL , timestamp_ltz_col timestamp with time zone DEFAULT NULL , char_col char (10) DEFAULT NULL , nchar_col char (10) DEFAULT NULL , nvarchar2_col varchar (50) DEFAULT NULL , varchar_col varchar2 (50) DEFAULT NULL , varchar2_col varchar2 (50) DEFAULT NULL , raw_col raw (100) DEFAULT NULL , bfile_col text DEFAULT NULL , blob_col bytea DEFAULT NULL , clob_col text DEFAULT NULL , nclob_col text DEFAULT NULL , rowid_col text DEFAULT NULL , urowid_col text DEFAULT NULL , PRIMARY KEY(ID));
ERROR: type "long" does not exist
LINE 1: ...number_col number (10, 2) DEFAULT NULL , long_col long DEFAU...
show ivorysql.compatible_mode;
ivorysql.compatible_mode
--------------------------
oracle
(1 row)
- Instead of succeeding, it complains about another data type not exist and thus the issue.
Additional context that can be helpful for identifying the problem
if we set ivorysql.compatible_mode=oracle before running any create table command, then it will work fine.
Bug Report
IvorySQL Version
OS Version (uname -a)
Configuration options ( config.status --config )
using all default configuration
Current Behavior
after a successful switch of ivorysql.compatible_mode from 'pg' to 'oracle', the create command with oracle data type will fail if we have executed and failed a create table command that contains oracle data types before the switch.
Expected behavior/code
after a successful switch of ivorysql.compatible_mode from 'pg' to 'oracle' (via the SET command), the create command with oracle data type shall succeed instead of fail.
Step to reproduce
CREATE TABLEclause that contains Oracle data type columns, which is expected to fail due to missing oracle data type.Additional context that can be helpful for identifying the problem
if we set ivorysql.compatible_mode=oracle before running any create table command, then it will work fine.