Revision 912

View differences:

org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/main/java/org/gvsig/oracle/dal/OracleSQLBuilder.java
126 126
        this.type_int = "NUMBER(" + (DataType.INT_MAX_PRECISION - 1) + ",0)";
127 127
        this.type_long = "NUMBER(" + (DataType.LONG_MAX_PRECISION - 1) + ",0)";
128 128
        this.type_string = "NCLOB";
129
        this.type_string_p = "NVARCHAR2({0})";
129
        this.type_string_p = "NVARCHAR2({0,Number,#######})";
130 130
        this.type_time = "TIMESTAMP";
131 131
        this.type_timestamp = "TIMESTAMP";
132 132
        this.type_version = "VARCHAR2(30)";
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/test/java/org/gvsig/oracle/dal/operations/sql/TestCreateTable.java
1 1
package org.gvsig.oracle.dal.operations.sql;
2 2

  
3 3

  
4
import static java.time.Clock.offset;
4 5
import java.util.List;
5 6
import junit.framework.TestCase;
7
import org.gvsig.fmap.dal.DataManager;
6 8
import org.gvsig.fmap.dal.feature.EditableFeatureType;
7 9
import org.gvsig.fmap.dal.feature.FeatureStore;
8 10
import org.gvsig.fmap.dal.feature.FeatureType;
......
61 63
            null
62 64
    );
63 65
    List<String> SQLs = createTable.getSQLs();
64
    assertEquals("CreateTable num. SQLs", expectedSQLs.size()/2, SQLs.size());
65
    for (int i = 0; i < expectedSQLs.size()/2; i++) {
66
    int sz = expectedSQLs.size();
67
    int offset = 0;
68
    int max = sz/3;
69
    assertEquals("CreateTable num. SQLs", max, SQLs.size());
70
    for (int i = 0; i < max; i++) {
66 71
      System.out.println("###### SQL "+i+":"+SQLs.get(i));
67
      System.out.println("###### EXP "+i+":"+expectedSQLs.get(i));
68
      assertEquals("CreateTable SQL "+i, expectedSQLs.get(i), SQLs.get(i));
72
      System.out.println("###### EXP "+i+":"+expectedSQLs.get(offset+i));
73
      assertEquals("CreateTable SQL "+i, expectedSQLs.get(offset+i), SQLs.get(i));
69 74
    }
70 75

  
71 76
  }
......
88 93
    );
89 94
    FeatureType featureType = sourceStore.getDefaultFeatureType();
90 95
    EditableFeatureType eft = featureType.getEditable();
91
    eft.getEditableAttributeDescriptor("String").setSize(5000);
96
    eft.getEditableAttributeDescriptor("String").setSize(DataManager.RECOMENDED_SIZE_FOR_CLOB+10);
92 97
    CreateTableOperation createTable = operations.createTable(
93 98
            table,
94 99
            eft.getNotEditableCopy(),
95 100
            null,
96 101
            null
102
    );    
103
    List<String> SQLs = createTable.getSQLs();
104
    int sz = expectedSQLs.size();
105
    int offset = (sz/3);
106
    int max = sz/3;
107
    assertEquals("CreateTable num. SQLs", max, SQLs.size());
108
    for (int i = 0; i < max; i++) {
109
      System.out.println("###### SQL "+i+":"+SQLs.get(i));
110
      System.out.println("###### EXP "+i+":"+expectedSQLs.get(offset+i));
111
      assertEquals("CreateTable SQL "+i, expectedSQLs.get(offset+i), SQLs.get(i));
112
    }
113

  
114
  }
115

  
116
  public void testCreateTableWithLargeString() throws Exception {
117
    JDBCHelper helper = TestUtils.getJDBCHelper();
118
    JDBCSQLBuilderBase sqlbuilder = helper.createSQLBuilder();
119
    OperationsFactory operations = helper.getOperations();
120

  
121
    List<String> expectedSQLs = TestUtils.getSQLs("createTable.sql");
122
    
123
    FeatureStore sourceStore = TestUtils.openSourceStore1();
124

  
125
    TableReference table = operations.createTableReference(
126
            "dbtest", 
127
            sqlbuilder.default_schema(), 
128
            "test", 
129
            null
97 130
    );
131
    FeatureType featureType = sourceStore.getDefaultFeatureType();
132
    EditableFeatureType eft = featureType.getEditable();
133
    eft.getEditableAttributeDescriptor("String").setSize(DataManager.RECOMENDED_SIZE_FOR_CLOB-10);
134
    CreateTableOperation createTable = operations.createTable(
135
            table,
136
            eft.getNotEditableCopy(),
137
            null,
138
            null
139
    );
98 140
    List<String> SQLs = createTable.getSQLs();
99
    assertEquals("CreateTable num. SQLs", expectedSQLs.size()/2, SQLs.size());
100
    for (int i = 0; i < expectedSQLs.size()/2; i++) {
141
    int sz = expectedSQLs.size();
142
    int offset = (sz/3)*2;
143
    int max = sz/3;
144
    assertEquals("CreateTable num. SQLs", max, SQLs.size());
145
    for (int i = 0; i < max; i++) {
101 146
      System.out.println("###### SQL "+i+":"+SQLs.get(i));
102
      System.out.println("###### EXP "+i+":"+expectedSQLs.get(expectedSQLs.size()/2+i));
103
      assertEquals("CreateTable SQL "+i, expectedSQLs.get(expectedSQLs.size()/2+i), SQLs.get(i));
147
      System.out.println("###### EXP "+i+":"+expectedSQLs.get(offset+i));
148
      assertEquals("CreateTable SQL "+i, expectedSQLs.get(offset+i), SQLs.get(i));
104 149
    }
105 150

  
106 151
  }
org.gvsig.oracle/trunk/org.gvsig.oracle/org.gvsig.oracle.provider/src/test/resources/org/gvsig/oracle/dal/operations/sql/createTable.sql
63 63

  
64 64
INSERT INTO MDSYS.OGIS_GEOMETRY_COLUMNS (
65 65
    F_TABLE_SCHEMA, F_TABLE_NAME, F_GEOMETRY_COLUMN, GEOMETRY_TYPE) 
66
    VALUES ('P1', 'TEST', 'GEOMETRY', 1);
66
    VALUES ('P1', 'TEST', 'GEOMETRY', 1);
67

  
68
-- Create table with large string
69

  
70
CREATE TABLE "P1"."TEST" (
71
    "ID" NUMBER(9,0), 
72
    "Byte" NUMBER(3,0) DEFAULT NULL, 
73
    "Bool1" CHAR(1) DEFAULT NULL, 
74
    "Long" NUMBER(18,0) DEFAULT NULL, 
75
    "Timestamp" TIMESTAMP DEFAULT NULL, 
76
    "Date" DATE DEFAULT NULL, 
77
    "Time" TIMESTAMP DEFAULT NULL, 
78
    "Bool2" CHAR(1) DEFAULT NULL, 
79
    "String" NVARCHAR2(4086) DEFAULT NULL, 
80
    "Bool3" CHAR(1) DEFAULT NULL, 
81
    "Double" BINARY_DOUBLE DEFAULT NULL, 
82
    "Bool4" CHAR(1) DEFAULT NULL, 
83
    "Float" BINARY_FLOAT DEFAULT NULL, 
84
    "Bool5" CHAR(1) DEFAULT NULL, 
85
    "Decimal" NUMBER(6,3) DEFAULT NULL, 
86
    "GEOMETRY"  SDO_GEOMETRY DEFAULT NULL 
87
);
88

  
89
ALTER TABLE "P1"."TEST" ADD PRIMARY KEY ("ID");
90

  
91
DELETE FROM MDSYS.OGIS_GEOMETRY_COLUMNS 
92
WHERE F_TABLE_SCHEMA = 'P1' 
93
    AND F_TABLE_NAME = 'TEST' 
94
    AND F_GEOMETRY_COLUMN = 'GEOMETRY';
95

  
96
INSERT INTO MDSYS.OGIS_GEOMETRY_COLUMNS (
97
    F_TABLE_SCHEMA, F_TABLE_NAME, F_GEOMETRY_COLUMN, GEOMETRY_TYPE) 
98
    VALUES ('P1', 'TEST', 'GEOMETRY', 1);
99

  

Also available in: Unified diff