protected List<Column> getBulkLoadableColumns(Table table) { ArrayList<Column> columns = new ArrayList<Column>(Arrays.asList(table.getColumns())); Iterator<Column> iterator = columns.iterator(); // TODO support BLOB and CLOBs in bulk load. For now, remove them while (iterator.hasNext()) { Column column = (Column) iterator.next(); if (column.getMappedTypeCode() == Types.CLOB || column.getMappedTypeCode() == Types.BLOB || column.getMappedTypeCode() == Types.VARBINARY) { iterator.remove(); } } return columns; }
@Override public Object[] getObjectValues(BinaryEncoding encoding, String[] values, Column[] orderedMetaData) { Object[] objectValues = super.getObjectValues(encoding, values, orderedMetaData); for (int i = 0; i < orderedMetaData.length; i++) { if (orderedMetaData[i] != null && orderedMetaData[i].getMappedTypeCode() == Types.BLOB && objectValues[i] != null) { try { objectValues[i] = new SerialBlob((byte[]) objectValues[i]); } catch (Exception e) { throw new RuntimeException(e); } } } return objectValues; }
protected void adjustColumns(Table table) { Column[] columns = table.getColumns(); for (int idx = 0; idx < columns.length; idx++) { if (columns[idx].getMappedTypeCode() == Types.FLOAT) { columns[idx].setMappedTypeCode(Types.REAL); } else if ((columns[idx].getMappedTypeCode() == Types.NUMERIC) || (columns[idx].getMappedTypeCode() == Types.DECIMAL)) { if ((columns[idx].getMappedTypeCode() == Types.NUMERIC) && (columns[idx].getSizeAsInt() == 18) && (columns[idx].getScale() == 0)) { columns[idx].setMappedTypeCode(Types.BIGINT); } } else if (TypeMap.isTextType(columns[idx].getMappedTypeCode())) { columns[idx].setDefaultValue(unescape(columns[idx].getDefaultValue(), "'", "''")); } } }
protected Column readColumn(DatabaseMetaDataWrapper metaData, Map<String, Object> values) throws SQLException { Column column = super.readColumn(metaData, values); if (column.getMappedTypeCode() == Types.VARCHAR) { int size = Integer.parseInt(column.getSize()); if (size >= InterbaseDdlBuilder.SWITCH_TO_LONGVARCHAR_SIZE) { column.setMappedTypeCode(Types.LONGVARCHAR); } } return column; }
protected Table postprocessTableFromDatabase(Table table) { if (table != null) { for (int columnIdx = 0; columnIdx < table.getColumnCount(); columnIdx++) { Column column = table.getColumn(columnIdx); if (TypeMap.isTextType(column.getMappedTypeCode()) || TypeMap.isDateTimeType(column.getMappedTypeCode())) { String defaultValue = column.getDefaultValue(); if ((defaultValue != null) && (defaultValue.length() >= 2) && defaultValue.startsWith("'") && defaultValue.endsWith("'")) { defaultValue = defaultValue.substring(1, defaultValue.length() - 1); column.setDefaultValue(defaultValue); } } } } return table; }
protected String buildColumnNameString(String tableAlias, boolean quote, Trigger trigger, Column[] columns) { StringBuilder columnsText = new StringBuilder(); for (Column column : columns) { boolean isLob = symmetricDialect.getPlatform().isLob(column.getMappedTypeCode()); String columnName = column.getName(); if (quote) { columnName = SymmetricUtils.quote(symmetricDialect, columnName); } if (!(isLob && trigger.isUseStreamLobs())) { if (StringUtils.isNotBlank(tableAlias)) { columnsText.append(tableAlias); columnsText.append("."); } columnsText.append(columnName); } else { columnsText.append("null"); } columnsText.append(","); } return columnsText.substring(0, columnsText.length() - 1); }
if (column.getMappedTypeCode() == Types.TIMESTAMP) { defaultValue = timestamp.toString(); } else if (column.getMappedTypeCode() == Types.DECIMAL) { defaultValue = defaultValue.substring(0, defaultValue.length() - 1); } else if (TypeMap.isTextType(column.getMappedTypeCode())) { defaultValue = unescape(defaultValue, "'", "''"); if ((column.getMappedTypeCode() == Types.DECIMAL) && (column.getSizeAsInt() == 19) && (column.getScale() == 0)) { column.setMappedTypeCode(Types.BIGINT);
@Override protected Column readColumn(DatabaseMetaDataWrapper metaData, Map<String,Object> values) throws SQLException { Column column = super.readColumn(metaData, values); if (column.getMappedTypeCode() == Types.FLOAT) { column.setMappedTypeCode(Types.REAL); } else if (TypeMap.isTextType(column.getMappedTypeCode())) { column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''")); } return column; }
Column column = super.readColumn(metaData, values); if ((column.getMappedTypeCode() == Types.NUMERIC) && (column.getSizeAsInt() == 19) && (column.getScale() == 0)) { if (column.getMappedTypeCode() == Types.TIMESTAMP) { column.setDefaultValue(timestamp.toString()); } else if (TypeMap.isTextType(column.getMappedTypeCode())) { column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''"));
Column column = super.readColumn(metaData, values); if ((column.getMappedTypeCode() == Types.NUMERIC) && (column.getSizeAsInt() == 18) && (column.getScale() == 0)) { } else if ((column.getMappedTypeCode() == Types.NUMERIC) && (column.getSizeAsInt() == 12) && (column.getScale() == 0)) { if (column.getMappedTypeCode() == Types.TIMESTAMP) { column.setDefaultValue(timestamp.toString()); } else if (TypeMap.isTextType(column.getMappedTypeCode())) { column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''"));
@Override protected Column readColumn(DatabaseMetaDataWrapper metaData, Map<String, Object> values) throws SQLException { Column column = super.readColumn(metaData, values); if (TypeMap.isTextType(column.getMappedTypeCode()) && (column.getDefaultValue() != null)) { column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''")); } String autoIncrement = (String) values.get("IS_AUTOINCREMENT"); if (autoIncrement != null) { column.setAutoIncrement("YES".equalsIgnoreCase(autoIncrement.trim())); } return column; }
@Override protected Column readColumn(DatabaseMetaDataWrapper metaData, Map<String, Object> values) throws SQLException { Column column = super.readColumn(metaData, values); // MySQL converts illegal date/time/timestamp values to // "0000-00-00 00:00:00", but this // is an illegal ISO value, so we replace it with NULL if ((column.getMappedTypeCode() == Types.TIMESTAMP) && "0000-00-00 00:00:00".equals(column.getDefaultValue())) { column.setDefaultValue(null); } // make sure the defaultvalue is null when an empty is returned. if ("".equals(column.getDefaultValue())) { column.setDefaultValue(null); } if (column.getJdbcTypeName().equalsIgnoreCase(TypeMap.POINT) || column.getJdbcTypeName().equalsIgnoreCase(TypeMap.LINESTRING) || column.getJdbcTypeName().equalsIgnoreCase(TypeMap.POLYGON) ) { column.setJdbcTypeName(TypeMap.GEOMETRY); } return column; }
column.findPlatformColumn(platform.getName()).setDecimalDigits(scale); if (TypeMap.isTextType(column.getMappedTypeCode()) && (column.getDefaultValue() != null)) { column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''"));
@Override protected Column readColumn(DatabaseMetaDataWrapper metaData, Map<String,Object> values) throws SQLException { Column column = super.readColumn(metaData, values); String defaultValue = column.getDefaultValue(); if (defaultValue != null) { // we check for these strings // GENERATED_BY_DEFAULT -> 'GENERATED BY DEFAULT AS IDENTITY' // AUTOINCREMENT: start 1 increment 1 -> 'GENERATED ALWAYS AS // IDENTITY' if ("GENERATED_BY_DEFAULT".equals(defaultValue) || defaultValue.startsWith("AUTOINCREMENT:")) { column.setDefaultValue(null); column.setAutoIncrement(true); } else if (TypeMap.isTextType(column.getMappedTypeCode())) { column.setDefaultValue(unescape(defaultValue, "'", "''")); } } return column; }
Column column = columns[i]; ArrayDescriptor type = ArrayDescriptor.createDescriptor( getTypeName(column.getMappedTypeCode()), oracleConnection); List<Object> columnData = rowArrays.get(i); ARRAY array = new ARRAY(type, oracleConnection,
@Override protected Column readColumn(DatabaseMetaDataWrapper metaData, Map<String, Object> values) throws SQLException { Column column = super.readColumn(metaData, values); if (TypeMap.isTextType(column.getMappedTypeCode()) && (column.getDefaultValue() != null)) { column.setDefaultValue(unescape(column.getDefaultValue(), "'", "''")); } return column; }
for (Column column : columns) { if (column != null) { int typeCode = column.getMappedTypeCode(); if (this.writerSettings.isTreatDateTimeFieldsAsVarchar() && (typeCode == Types.DATE || typeCode == Types.TIME || typeCode == Types.TIMESTAMP)) {
if (objectValue == null) { throw new RuntimeException("No random value generated for the object " + table.getName() + "." + column.getName() + " of code " + column.getMappedTypeCode() + " jdbc name " + column.getJdbcTypeName());
boolean containsEmptyLobColumn = platform.isLob(column.getMappedTypeCode()) && StringUtils.isBlank(oldData[columnIndex]); needsUpdated = !StringUtils.equals(rowData[columnIndex], oldData[columnIndex])
String sql = buildSelect(table, lobColumn, pkColumns); String valueForCsv = null; if (platform.isBlob(lobColumn.getMappedTypeCode())) { byte[] binaryData = sqlTemplate.queryForBlob(sql, lobColumn.getJdbcTypeCode(),lobColumn.getJdbcTypeName(), args); if (binaryData != null) {