View Issue Details

IDProjectCategoryView StatusLast Update
0002298SymmetricDSBugpublic2024-11-20 20:11
Reportermsc Assigned Toelong  
Prioritynormal 
Status resolvedResolutionfixed 
Product Version3.7.16 
Target Version3.15.11Fixed in Version3.15.11 
Summary0002298: DDL detection of a default value for real/float column type on the Interbase is wrong
Descriptioni'm try to send ddl+data (initial load) from interbase to postgresql servers.
But for some tables the ddl was wrongly detected from the interbase server.

[postgres3] - DefaultDatabaseWriter - About to create table using the following definition: <?xml version="1.0"?>
<!DOCTYPE database SYSTEM "http://db.apache.org/torque/dtd/database">
<database name="dataextractor" schema="afa_ib_import">
        <table name="UMSATZ_VP">
                <column name="MANR" primaryKey="true" required="true" type="INTEGER" size="0">
                        <platform-column name="interbase" type="INTEGER" size="10"/>
                </column>
                <column name="EH" type="REAL" size="7" default="default 0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="default 0"/>
                </column>
                <column name="EH50" type="REAL" size="7" default="default 0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="default 0"/>
                </column>
                <column name="EH25" type="REAL" size="7" default="default 0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="default 0"/>
                </column>
                <column name="EH20" type="REAL" size="7" default="default 0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="default 0"/>
                </column>
                <column name="EH16" type="REAL" size="7" default="default 0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="default 0"/>
                </column>
                <column name="EH14" type="REAL" size="7" default="default 0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="default 0"/>
                </column>
                <column name="EHVK" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="DE7" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="DE15" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="KV" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="TV" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="TL" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="D" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="KSTUFE" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="GSTUFE" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="STRUKTUR" type="INTEGER" size="0">
                        <platform-column name="interbase" type="INTEGER" size="10"/>
                </column>
                <column name="IQUOTE" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="IQUOTEA" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="FP" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="FPA" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="STR01" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="STR02" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="ZKSTUFE" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="ZDE7" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="ZDE15" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="ZKV" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="ZTV" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="ZTL" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="ZD" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="MONATEH1" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="MONATEH2" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="MONATSOLL1" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="MONATSOLL2" type="REAL" size="7" default="0">
                        <platform-column name="interbase" type="FLOAT" size="7" default="0"/>
                </column>
                <column name="MONATFP1" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="MONATFP2" type="INTEGER" size="0" default="0">
                        <platform-column name="interbase" type="INTEGER" size="10" default="0"/>
                </column>
                <column name="SORT1" type="INTEGER" size="0">
                        <platform-column name="interbase" type="INTEGER" size="10"/>
                </column>
                <column name="SORT2" type="INTEGER" size="0">
                        <platform-column name="interbase" type="INTEGER" size="10"/>
                </column>
                <column name="SORT3" type="INTEGER" size="0">
                        <platform-column name="interbase" type="INTEGER" size="10"/>
                </column>
                <column name="ID" required="true" type="INTEGER" size="0">
                        <platform-column name="interbase" type="INTEGER" size="10"/>
                </column>
                <index name="UMSATZ_VP_IDX1">
                        <index-column name="KSTUFE"/>
                </index>
        </table>
</database>

as you can see the default value for the eh/eh50/.. columns (*some* columns with type=FLOAT/REAL but not all of them?!?) is wrongly detected as "default 0" instead of "0".

For the other column types (i.e. integer) it works fine as you can see above.

the above would produce the following wrong ddl-statement for postgresql:

[postgres3] - PostgreSqlDatabasePlatform - Running alter sql:
CREATE TABLE "afa_ib_import"."umsatz_vp"(
    "manr" INTEGER NOT NULL,
    "eh" REAL DEFAULT default 0,
    "eh50" REAL DEFAULT default 0,
    "eh25" REAL DEFAULT default 0,
    "eh20" REAL DEFAULT default 0,
    "eh16" REAL DEFAULT default 0,
    "eh14" REAL DEFAULT default 0,
    "ehvk" REAL DEFAULT 0,
    "de7" INTEGER DEFAULT 0,
    "de15" INTEGER DEFAULT 0,
    "kv" INTEGER DEFAULT 0,
    "tv" INTEGER DEFAULT 0,
    "tl" INTEGER DEFAULT 0,
    "d" INTEGER DEFAULT 0,
    "kstufe" INTEGER DEFAULT 0,
    "gstufe" INTEGER DEFAULT 0,
    "struktur" INTEGER,
    "iquote" REAL DEFAULT 0,
    "iquotea" REAL DEFAULT 0,
    "fp" INTEGER DEFAULT 0,
    "fpa" INTEGER DEFAULT 0,
    "str01" REAL DEFAULT 0,
    "str02" REAL DEFAULT 0,
    "zkstufe" INTEGER DEFAULT 0,
    "zde7" INTEGER DEFAULT 0,
    "zde15" INTEGER DEFAULT 0,
    "zkv" INTEGER DEFAULT 0,
    "ztv" INTEGER DEFAULT 0,
    "ztl" INTEGER DEFAULT 0,
    "zd" INTEGER DEFAULT 0,
    "monateh1" REAL DEFAULT 0,
    "monateh2" REAL DEFAULT 0,
    "monatsoll1" REAL DEFAULT 0,
    "monatsoll2" REAL DEFAULT 0,
    "monatfp1" INTEGER DEFAULT 0,
    "monatfp2" INTEGER DEFAULT 0,
    "sort1" INTEGER,
    "sort2" INTEGER,
    "sort3" INTEGER,
    "id" INTEGER NOT NULL,
    PRIMARY KEY ("manr")
);
CREATE INDEX "umsatz_vp_idx1" ON "afa_ib_import"."umsatz_vp" ("kstufe");


the different behavior on REAL column types looks strange to me.
Steps To ReproduceCREATE TABLE float_test(
    id INTEGER NOT NULL PRIMARY KEY,
    DATA float DEFAULT 0 NOT NULL
);

From the web console Explore tab, run the DDL exporter and review output for the DEFAULT value.
Tagsddl/schema, dialect: interbase

Activities

msc

2015-08-07 06:46

reporter   ~0000707

it looks like the DDL-Parser compare the "default" value from system table case-sensitive instead of case-insensitive.

After changing the "default" keyword to uppercase it detects the correct DDL.

Related Changesets

SymmetricDS: 3.15 0ccdaa32

2024-11-20 19:03:03

admin

Details Diff
0002298: ddl detection of real/float default value on interbase is wrong Affected Issues
0002298
mod - symmetric-jdbc/src/main/java/org/jumpmind/db/platform/interbase/InterbaseDdlReader.java Diff File

Issue History

Date Modified Username Field Change
2015-05-15 08:54 msc New Issue
2015-08-07 06:46 msc Note Added: 0000707
2019-04-23 17:13 elong Tag Attached: ddl/schema
2019-04-23 17:14 elong Tag Attached: interbase
2019-04-23 20:49 admin Tag Renamed interbase => dialect: interbase
2019-04-26 22:00 elong Summary ddl detection on interbase is wrong => ddl detection of read/float default value on interbase is wrong
2024-11-20 18:55 mdrouard Assigned To => elong
2024-11-20 18:55 mdrouard Status new => assigned
2024-11-20 18:55 mdrouard Target Version => 3.15.11
2024-11-20 18:55 mdrouard Summary ddl detection of read/float default value on interbase is wrong => ddl detection of real/float default value on interbase is wrong
2024-11-20 19:03 elong Status assigned => resolved
2024-11-20 19:03 elong Resolution open => fixed
2024-11-20 19:03 elong Fixed in Version => 3.15.11
2024-11-20 20:00 admin Changeset attached => SymmetricDS 3.15 0ccdaa32
2024-11-20 20:08 pbelov Steps to Reproduce Updated View Revisions
2024-11-20 20:11 pbelov Summary ddl detection of real/float default value on interbase is wrong => DDL detection of a default value for real/float column type on the Interbase is wrong