Revision 46806 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/feature/spi/SQLBuilderBase.java
SQLBuilderBase.java | ||
---|---|---|
56 | 56 |
import org.gvsig.tools.dataTypes.DataType; |
57 | 57 |
import org.gvsig.tools.dynobject.Tags; |
58 | 58 |
import org.gvsig.tools.lang.CloneableUtils; |
59 |
import org.gvsig.tools.util.Bitmask; |
|
59 | 60 |
import org.gvsig.tools.util.PropertiesSupport; |
60 | 61 |
import org.slf4j.Logger; |
61 | 62 |
import org.slf4j.LoggerFactory; |
... | ... | |
2309 | 2310 |
public class AlterTableBuilderBase |
2310 | 2311 |
extends AbstractStatement |
2311 | 2312 |
implements AlterTableBuilder { |
2312 |
|
|
2313 |
|
|
2313 | 2314 |
protected TableNameBuilder table; |
2314 | 2315 |
protected List<String> drops; |
2315 | 2316 |
protected List<ColumnDescriptor> adds; |
2317 |
|
|
2318 |
// alters debera dejarse de usar en fabor de operation_alters |
|
2319 |
@Deprecated |
|
2316 | 2320 |
protected List<ColumnDescriptor> alters; |
2321 |
protected List<Pair<Bitmask,ColumnDescriptor>> operations; |
|
2322 |
|
|
2317 | 2323 |
protected List<Pair<String, String>> renames; |
2318 | 2324 |
protected String drop_primary_key_column; |
2319 | 2325 |
|
... | ... | |
2321 | 2327 |
this.drops = new ArrayList<>(); |
2322 | 2328 |
this.adds = new ArrayList<>(); |
2323 | 2329 |
this.alters = new ArrayList<>(); |
2330 |
this.operations = new ArrayList<>(); |
|
2324 | 2331 |
this.renames = new ArrayList<>(); |
2325 | 2332 |
} |
2326 | 2333 |
|
2334 |
public List<Pair<Bitmask,ColumnDescriptor>> getOperations() { |
|
2335 |
return this.operations; |
|
2336 |
} |
|
2337 |
|
|
2327 | 2338 |
@Override |
2328 | 2339 |
public boolean isEmpty() { |
2329 | 2340 |
return this.drops.isEmpty() |
2330 | 2341 |
&& this.adds.isEmpty() |
2331 | 2342 |
&& this.alters.isEmpty() |
2343 |
&& this.operations.isEmpty() |
|
2332 | 2344 |
&& this.renames.isEmpty(); |
2333 | 2345 |
} |
2334 | 2346 |
|
... | ... | |
2400 | 2412 |
return this; |
2401 | 2413 |
} |
2402 | 2414 |
|
2415 |
private void update_or_add_alters(ColumnDescriptorBase column) { |
|
2416 |
int i = 0; |
|
2417 |
for (; i < alters.size(); i++) { |
|
2418 |
ColumnDescriptor prevColumn = alters.get(i); |
|
2419 |
if( prevColumn.getName().equalsIgnoreCase(column.getName()) ) { |
|
2420 |
// Si ya existia la actualizamos |
|
2421 |
alters.set(i, column); |
|
2422 |
break; |
|
2423 |
} |
|
2424 |
|
|
2425 |
} |
|
2426 |
if( i >= alters.size() ) { |
|
2427 |
// Si no existis la a?adimos |
|
2428 |
this.alters.add(column); |
|
2429 |
} |
|
2430 |
} |
|
2431 |
|
|
2403 | 2432 |
@Override |
2404 | 2433 |
public AlterTableBuilder alter_column(FeatureAttributeDescriptor fad) { |
2405 |
this.alters.add(new ColumnDescriptorBase(fad)); |
|
2434 |
ColumnDescriptorBase column = new ColumnDescriptorBase(fad); |
|
2435 |
update_or_add_alters(column); |
|
2436 |
Bitmask operation = Bitmask.createBitmask(0); |
|
2437 |
operation.setBit(ALTER_COLUMN_ALL); |
|
2438 |
this.operations.add(new ImmutablePair<>(operation,column)); |
|
2406 | 2439 |
return this; |
2407 | 2440 |
} |
2408 | 2441 |
|
2409 | 2442 |
@Override |
2410 | 2443 |
public AlterTableBuilder alter_column(String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue) { |
2411 |
if (isPk || isAutomatic) {
|
|
2444 |
if ( (isPk || isAutomatic) && allowNulls) {
|
|
2412 | 2445 |
allowNulls = false; |
2413 | 2446 |
} |
2414 |
this.alters.add(new ColumnDescriptorBase(columnName, type, size, precision, scale, isPk, isIndexed, allowNulls, isAutomatic, defaultValue)); |
|
2447 |
ColumnDescriptorBase column = new ColumnDescriptorBase(columnName, type, size, precision, scale, isPk, isIndexed, allowNulls, isAutomatic, defaultValue); |
|
2448 |
update_or_add_alters(column); |
|
2449 |
Bitmask operation = Bitmask.createBitmask(0); |
|
2450 |
operation.setBit(ALTER_COLUMN_ALL); |
|
2451 |
this.operations.add(new ImmutablePair<>(operation,column)); |
|
2415 | 2452 |
return this; |
2416 | 2453 |
} |
2417 | 2454 |
|
2418 | 2455 |
@Override |
2456 |
public AlterTableBuilder alter_column(Bitmask operation,String columnName, int type, int size, int precision, int scale, boolean isPk, boolean isIndexed, boolean allowNulls, boolean isAutomatic, Object defaultValue) { |
|
2457 |
if ( (isPk || isAutomatic) && allowNulls) { |
|
2458 |
allowNulls = false; |
|
2459 |
operation.setBit(ALTER_COLUMN_SET_NULL); |
|
2460 |
} |
|
2461 |
ColumnDescriptorBase column = new ColumnDescriptorBase(columnName, type, size, precision, scale, isPk, isIndexed, allowNulls, isAutomatic, defaultValue); |
|
2462 |
update_or_add_alters(column); |
|
2463 |
this.operations.add(new ImmutablePair<>(operation,column)); |
|
2464 |
return this; |
|
2465 |
} |
|
2466 |
|
|
2467 |
@Override |
|
2419 | 2468 |
public AlterTableBuilder alter_geometry_column(String columnName, int type, int subtype, IProjection proj, boolean isIndexed, boolean allowNulls) { |
2420 | 2469 |
if (StringUtils.isEmpty(columnName)) { |
2421 | 2470 |
throw new IllegalArgumentException("Argument 'columnName' can't be empty."); |
2422 | 2471 |
} |
2423 |
this.alters.add(new ColumnDescriptorBase(columnName, type, subtype, proj, isIndexed, allowNulls)); |
|
2472 |
ColumnDescriptorBase column = new ColumnDescriptorBase(columnName, type, subtype, proj, isIndexed, allowNulls); |
|
2473 |
update_or_add_alters(column); |
|
2474 |
Bitmask operation = Bitmask.createBitmask(0); |
|
2475 |
operation.setBit(ALTER_COLUMN_GEOMETRY); |
|
2476 |
this.operations.add(new ImmutablePair<>(operation,column)); |
|
2424 | 2477 |
return this; |
2425 | 2478 |
} |
2426 | 2479 |
|
... | ... | |
2429 | 2482 |
if (StringUtils.isEmpty(columnName)) { |
2430 | 2483 |
throw new IllegalArgumentException("Argument 'columnName' can't be empty."); |
2431 | 2484 |
} |
2432 |
this.alters.add(new ColumnDescriptorBase(columnName, type, subtype, srsdbcode, isIndexed, allowNulls)); |
|
2485 |
ColumnDescriptorBase column = new ColumnDescriptorBase(columnName, type, subtype, srsdbcode, isIndexed, allowNulls); |
|
2486 |
update_or_add_alters(column); |
|
2487 |
Bitmask operation = Bitmask.createBitmask(0); |
|
2488 |
operation.setBit(ALTER_COLUMN_GEOMETRY); |
|
2489 |
this.operations.add(new ImmutablePair<>(operation,column)); |
|
2433 | 2490 |
return this; |
2434 | 2491 |
} |
2435 | 2492 |
|
... | ... | |
2445 | 2502 |
return constraint_name; |
2446 | 2503 |
} |
2447 | 2504 |
|
2505 |
protected List<String> alter_table_add_primarykey_sqls(Formatter<Value> formatter, ColumnDescriptor column) { |
|
2506 |
// ALTER TABLE table_name ADD CONSTRAINT IF NOT EXISTS constraint_name PRIMARY KEY(column_name) |
|
2507 |
List<String> sqls = new ArrayList<>(); |
|
2508 |
StringBuilder builder = new StringBuilder(); |
|
2509 |
builder.append("ALTER TABLE "); |
|
2510 |
builder.append(this.table.toString(formatter)); |
|
2511 |
builder.append(" ADD CONSTRAINT "); |
|
2512 |
builder.append("IF NOT EXISTS "); |
|
2513 |
builder.append(as_identifier(getConstrainName("PK",column.getName()))); |
|
2514 |
builder.append(" PRIMARY KEY( "); |
|
2515 |
builder.append(as_identifier(column.getName())); |
|
2516 |
builder.append(" )"); |
|
2517 |
sqls.add(builder.toString()); |
|
2518 |
return sqls; |
|
2519 |
} |
|
2520 |
|
|
2521 |
protected List<String> alter_table_drop_primarykey_sqls(Formatter<Value> formatter, ColumnDescriptor column) { |
|
2522 |
// ALTER TABLE table_name DROP CONSTRAINT constraint_name |
|
2523 |
StringBuilder builder = new StringBuilder(); |
|
2524 |
builder.append("ALTER TABLE "); |
|
2525 |
builder.append(this.table.toString(formatter)); |
|
2526 |
builder.append(" DROP CONSTRAINT "); |
|
2527 |
builder.append("IF EXISTS "); |
|
2528 |
builder.append(as_identifier(getConstrainName("PK",column.getName()))); |
|
2529 |
return Collections.singletonList(builder.toString()); |
|
2530 |
} |
|
2531 |
|
|
2532 |
protected List<String> create_index_sqls(Formatter<Value> formatter, ColumnDescriptor column) { |
|
2533 |
// CREATE INDEX IF NOT EXISTS idx_name ON table_name ( column_name )", |
|
2534 |
StringBuilder builder = new StringBuilder(); |
|
2535 |
builder.append("CREATE INDEX "); |
|
2536 |
builder.append("IF NOT EXISTS "); |
|
2537 |
builder.append(as_identifier(getConstrainName("IDX",column.getName()))); |
|
2538 |
builder.append(" ON "); |
|
2539 |
builder.append(this.table.toString(formatter)); |
|
2540 |
builder.append(" ( "); |
|
2541 |
builder.append(as_identifier(column.getName())); |
|
2542 |
builder.append(" )"); |
|
2543 |
return Collections.singletonList(builder.toString()); |
|
2544 |
} |
|
2545 |
|
|
2546 |
protected List<String> drop_index_sqls(Formatter<Value> formatter, ColumnDescriptor column) { |
|
2547 |
// DROP INDEX IF EXISTS idx_name", |
|
2548 |
StringBuilder builder = new StringBuilder(); |
|
2549 |
builder.append("DROP INDEX "); |
|
2550 |
builder.append("IF EXISTS "); |
|
2551 |
builder.append(as_identifier(getConstrainName("IDX",column.getName()))); |
|
2552 |
return Collections.singletonList(builder.toString()); |
|
2553 |
} |
|
2554 |
|
|
2555 |
protected List<String> alter_table_alter_column_set_data_type_sqls(Formatter<Value> formatter, ColumnDescriptor column) { |
|
2556 |
StringBuilder builder = new StringBuilder(); |
|
2557 |
builder.append("ALTER TABLE "); |
|
2558 |
builder.append(this.table.toString(formatter)); |
|
2559 |
builder.append(" ALTER COLUMN "); |
|
2560 |
builder.append(as_identifier(column.getName())); |
|
2561 |
builder.append(" SET DATA TYPE "); |
|
2562 |
if (column.getType() == DataTypes.INT && column.isAutomatic()) { |
|
2563 |
builder.append(" SERIAL"); |
|
2564 |
} else { |
|
2565 |
builder.append( |
|
2566 |
sqltype( |
|
2567 |
column.getType(), |
|
2568 |
column.getSize(), |
|
2569 |
column.getPrecision(), |
|
2570 |
column.getScale(), |
|
2571 |
column.getGeometryType(), |
|
2572 |
column.getGeometrySubtype() |
|
2573 |
) |
|
2574 |
); |
|
2575 |
} |
|
2576 |
return Collections.singletonList(builder.toString()); |
|
2577 |
} |
|
2578 |
|
|
2579 |
protected List<String> alter_table_alter_column_set_default_sqls(Formatter<Value> formatter, ColumnDescriptor column) { |
|
2580 |
StringBuilder builder = new StringBuilder(); |
|
2581 |
builder.append("ALTER TABLE "); |
|
2582 |
builder.append(this.table.toString(formatter)); |
|
2583 |
builder.append(" ALTER COLUMN "); |
|
2584 |
builder.append(as_identifier(column.getName())); |
|
2585 |
if (column.getDefaultValue() == null) { |
|
2586 |
if (column.allowNulls()) { |
|
2587 |
builder.append(" SET DEFAULT NULL"); |
|
2588 |
} else { |
|
2589 |
builder.append(" DROP DEFAULT"); |
|
2590 |
} |
|
2591 |
} else { |
|
2592 |
builder.append(" SET DEFAULT '"); |
|
2593 |
builder.append(column.getDefaultValue().toString()); |
|
2594 |
builder.append("'"); |
|
2595 |
} |
|
2596 |
return Collections.singletonList(builder.toString()); |
|
2597 |
} |
|
2598 |
|
|
2599 |
protected List<String> alter_table_alter_column_set_null_sqls(Formatter<Value> formatter, ColumnDescriptor column) { |
|
2600 |
StringBuilder builder = new StringBuilder(); |
|
2601 |
builder.append("ALTER TABLE "); |
|
2602 |
builder.append(this.table.toString(formatter)); |
|
2603 |
builder.append(" ALTER COLUMN "); |
|
2604 |
builder.append(as_identifier(column.getName())); |
|
2605 |
if (column.allowNulls()) { |
|
2606 |
builder.append(" SET NULL"); |
|
2607 |
} else { |
|
2608 |
builder.append(" SET NOT NULL"); |
|
2609 |
} |
|
2610 |
return Collections.singletonList(builder.toString()); |
|
2611 |
} |
|
2612 |
|
|
2613 |
protected List<String> alter_table_drop_column_sqls(Formatter<Value> formatter, String columnName) { |
|
2614 |
StringBuilder builder = new StringBuilder(); |
|
2615 |
builder.append("ALTER TABLE "); |
|
2616 |
builder.append(this.table.toString(formatter)); |
|
2617 |
builder.append(" DROP COLUMN "); |
|
2618 |
builder.append(" IF EXISTS "); |
|
2619 |
builder.append(as_identifier(columnName)); |
|
2620 |
return Collections.singletonList(builder.toString()); |
|
2621 |
} |
|
2622 |
|
|
2623 |
protected List<String> alter_table_add_column_sqls(Formatter<Value> formatter, ColumnDescriptor column) { |
|
2624 |
List<String> sqls = new ArrayList<>(); |
|
2625 |
StringBuilder builder = new StringBuilder(); |
|
2626 |
builder.append("ALTER TABLE "); |
|
2627 |
builder.append(this.table.toString(formatter)); |
|
2628 |
builder.append(" ADD COLUMN "); |
|
2629 |
builder.append(as_identifier(column.getName())); |
|
2630 |
builder.append(" "); |
|
2631 |
if (column.getType() == DataTypes.INT && column.isAutomatic()) { |
|
2632 |
builder.append(" SERIAL"); |
|
2633 |
} else { |
|
2634 |
builder.append( |
|
2635 |
sqltype( |
|
2636 |
column.getType(), |
|
2637 |
column.getSize(), |
|
2638 |
column.getPrecision(), |
|
2639 |
column.getScale(), |
|
2640 |
column.getGeometryType(), |
|
2641 |
column.getGeometrySubtype() |
|
2642 |
) |
|
2643 |
); |
|
2644 |
} |
|
2645 |
if (column.getDefaultValue() == null) { |
|
2646 |
if (column.allowNulls()) { |
|
2647 |
builder.append(" DEFAULT NULL"); |
|
2648 |
} |
|
2649 |
} else { |
|
2650 |
builder.append(" DEFAULT '"); |
|
2651 |
builder.append(Objects.toString(column.getDefaultValue(),"")); |
|
2652 |
builder.append("'"); |
|
2653 |
} |
|
2654 |
if (column.allowNulls()) { |
|
2655 |
builder.append(" NULL"); |
|
2656 |
} else { |
|
2657 |
builder.append(" NOT NULL"); |
|
2658 |
} |
|
2659 |
if (column.isPrimaryKey()) { |
|
2660 |
builder.append(" PRIMARY KEY"); |
|
2661 |
} |
|
2662 |
sqls.add(builder.toString()); |
|
2663 |
|
|
2664 |
if( column.isGeometry() ) { |
|
2665 |
sqls.addAll(alter_column_add_geometry_constraint_sqls(formatter, column)); |
|
2666 |
} |
|
2667 |
if( column.isIndexed() ) { |
|
2668 |
sqls.addAll(create_index_sqls(formatter, column)); |
|
2669 |
} |
|
2670 |
return sqls; |
|
2671 |
} |
|
2672 |
|
|
2673 |
protected List<String> alter_table_alter_column_rename_sqls(Formatter<Value> formatter, String oldName, String newName) { |
|
2674 |
StringBuilder builder = new StringBuilder(); |
|
2675 |
builder.append("ALTER TABLE "); |
|
2676 |
builder.append(this.table.toString(formatter)); |
|
2677 |
builder.append(" ALTER COLUMN "); |
|
2678 |
builder.append(as_identifier(oldName)); |
|
2679 |
builder.append(" RENAME TO "); |
|
2680 |
builder.append(as_identifier(newName)); |
|
2681 |
return Collections.singletonList(builder.toString()); |
|
2682 |
} |
|
2683 |
|
|
2684 |
protected List<String> alter_column_add_geometry_constraint_sqls(Formatter<ExpressionBuilder.Value> formatter, ColumnDescriptor column) { |
|
2685 |
return Collections.EMPTY_LIST; |
|
2686 |
} |
|
2687 |
|
|
2448 | 2688 |
@Override |
2449 | 2689 |
public String toString() { |
2450 | 2690 |
return this.toString(formatter()); |
... | ... | |
2483 | 2723 |
return sqls; |
2484 | 2724 |
} |
2485 | 2725 |
for (String column : drops) { |
2486 |
StringBuilder builder = new StringBuilder(); |
|
2487 |
builder.append("ALTER TABLE "); |
|
2488 |
builder.append(this.table.toString(formatter)); |
|
2489 |
builder.append(" DROP COLUMN IF EXISTS "); |
|
2490 |
builder.append(as_identifier(column)); |
|
2491 |
sqls.add(builder.toString()); |
|
2726 |
sqls.addAll(alter_table_drop_column_sqls(formatter, column)); |
|
2492 | 2727 |
} |
2493 | 2728 |
for (ColumnDescriptor column : adds) { |
2494 |
StringBuilder builder = new StringBuilder(); |
|
2495 |
builder.append("ALTER TABLE "); |
|
2496 |
builder.append(this.table.toString(formatter)); |
|
2497 |
builder.append(" ADD COLUMN "); |
|
2498 |
builder.append(as_identifier(column.getName())); |
|
2499 |
builder.append(" "); |
|
2500 |
if (column.getType() == DataTypes.INT && column.isAutomatic()) { |
|
2501 |
builder.append(" SERIAL"); |
|
2502 |
} else { |
|
2503 |
builder.append( |
|
2504 |
sqltype( |
|
2505 |
column.getType(), |
|
2506 |
column.getSize(), |
|
2507 |
column.getPrecision(), |
|
2508 |
column.getScale(), |
|
2509 |
column.getGeometryType(), |
|
2510 |
column.getGeometrySubtype() |
|
2511 |
) |
|
2512 |
); |
|
2513 |
} |
|
2514 |
if (column.getDefaultValue() == null) { |
|
2515 |
if (column.allowNulls()) { |
|
2516 |
builder.append(" DEFAULT NULL"); |
|
2517 |
} |
|
2518 |
} else { |
|
2519 |
builder.append(" DEFAULT '"); |
|
2520 |
builder.append(Objects.toString(column.getDefaultValue(),"")); |
|
2521 |
builder.append("'"); |
|
2522 |
} |
|
2523 |
if (column.allowNulls()) { |
|
2524 |
builder.append(" NULL"); |
|
2525 |
} else { |
|
2526 |
builder.append(" NOT NULL"); |
|
2527 |
} |
|
2528 |
if (column.isPrimaryKey()) { |
|
2529 |
builder.append(" PRIMARY KEY"); |
|
2530 |
} |
|
2531 |
sqls.add(builder.toString()); |
|
2729 |
sqls.addAll(alter_table_add_column_sqls(formatter, column)); |
|
2532 | 2730 |
} |
2533 |
for (ColumnDescriptor column : alters) { |
|
2534 |
StringBuilder builder = new StringBuilder(); |
|
2535 |
builder.append("ALTER TABLE "); |
|
2536 |
builder.append(this.table.toString(formatter)); |
|
2537 |
builder.append(" ALTER COLUMN "); |
|
2538 |
builder.append(as_identifier(column.getName())); |
|
2539 |
builder.append(" SET DATA TYPE "); |
|
2540 |
if (column.getType() == DataTypes.INT && column.isAutomatic()) { |
|
2541 |
builder.append(" SERIAL"); |
|
2542 |
} else { |
|
2543 |
builder.append( |
|
2544 |
sqltype( |
|
2545 |
column.getType(), |
|
2546 |
column.getSize(), |
|
2547 |
column.getPrecision(), |
|
2548 |
column.getScale(), |
|
2549 |
column.getGeometryType(), |
|
2550 |
column.getGeometrySubtype() |
|
2551 |
) |
|
2552 |
); |
|
2553 |
} |
|
2554 |
sqls.add(builder.toString()); |
|
2555 |
} |
|
2556 |
for (ColumnDescriptor column : alters) { |
|
2557 |
StringBuilder builder = new StringBuilder(); |
|
2558 |
builder.append("ALTER TABLE "); |
|
2559 |
builder.append(this.table.toString(formatter)); |
|
2560 |
builder.append(" ALTER COLUMN "); |
|
2561 |
builder.append(as_identifier(column.getName())); |
|
2562 |
if (column.getDefaultValue() == null) { |
|
2563 |
if (column.allowNulls()) { |
|
2564 |
builder.append(" SET DEFAULT NULL"); |
|
2731 |
for (Pair<Bitmask,ColumnDescriptor> operationAndColumn : this.getOperations()) { |
|
2732 |
Bitmask operation = operationAndColumn.getLeft(); |
|
2733 |
ColumnDescriptor column = operationAndColumn.getRight(); |
|
2734 |
if( operation.isSetBit(ALTER_COLUMN_ALL) ) { |
|
2735 |
if( column.isPrimaryKey() ) { |
|
2736 |
sqls.addAll(alter_table_add_primarykey_sqls(formatter, column)); |
|
2565 | 2737 |
} else { |
2566 |
builder.append(" DROP DEFAULT"); |
|
2738 |
sqls.addAll(alter_table_drop_primarykey_sqls(formatter, column)); |
|
2739 |
if( column.isIndexed() ) { |
|
2740 |
sqls.addAll(create_index_sqls(formatter, column)); |
|
2741 |
} |
|
2567 | 2742 |
} |
2743 |
sqls.addAll(alter_table_alter_column_set_data_type_sqls(formatter, column)); |
|
2744 |
sqls.addAll(alter_table_alter_column_set_default_sqls(formatter, column)); |
|
2745 |
sqls.addAll(alter_table_alter_column_set_null_sqls(formatter, column)); |
|
2746 |
if( column.isGeometry() ) { |
|
2747 |
sqls.addAll(alter_column_add_geometry_constraint_sqls(formatter, column)); |
|
2748 |
} |
|
2568 | 2749 |
} else { |
2569 |
builder.append(" SET DEFAULT '"); |
|
2570 |
builder.append(column.getDefaultValue().toString()); |
|
2571 |
builder.append("'"); |
|
2750 |
if( operation.isSetBit(ALTER_COLUMN_SET_NULL) ) { // Debe ir antes del "add primary key" |
|
2751 |
sqls.addAll(alter_table_alter_column_set_null_sqls(formatter, column)); |
|
2752 |
} |
|
2753 |
|
|
2754 |
if( operation.isSetBit(ALTER_COLUMN_SET_DATA_TYPE) ) { |
|
2755 |
sqls.addAll(alter_table_alter_column_set_data_type_sqls(formatter, column)); |
|
2756 |
} |
|
2757 |
|
|
2758 |
if( operation.isSetBit(ALTER_COLUMN_ADD_PRIMARY_KEY) ) { |
|
2759 |
sqls.addAll(alter_table_add_primarykey_sqls(formatter, column)); |
|
2760 |
} |
|
2761 |
|
|
2762 |
if( operation.isSetBit(ALTER_COLUMN_DROP_PRIMARY_KEY) ) { |
|
2763 |
sqls.addAll(alter_table_drop_primarykey_sqls(formatter, column)); |
|
2764 |
} |
|
2765 |
|
|
2766 |
if( operation.isSetBit(ALTER_COLUMN_SET_DEFAULT) ) { |
|
2767 |
sqls.addAll(alter_table_alter_column_set_default_sqls(formatter, column)); |
|
2768 |
} |
|
2769 |
|
|
2770 |
if( operation.isSetBit(ALTER_COLUMN_CREATE_INDEX) ) { |
|
2771 |
sqls.addAll(create_index_sqls(formatter, column)); |
|
2772 |
} |
|
2773 |
|
|
2774 |
if( operation.isSetBit(ALTER_COLUMN_DROP_INDEX) ) { |
|
2775 |
sqls.addAll(drop_index_sqls(formatter, column)); |
|
2776 |
} |
|
2777 |
|
|
2778 |
if( operation.isSetBit(ALTER_COLUMN_GEOMETRY) ) { |
|
2779 |
if( column.isGeometry() ) { |
|
2780 |
sqls.addAll(alter_column_add_geometry_constraint_sqls(formatter, column)); |
|
2781 |
} |
|
2782 |
} |
|
2783 |
|
|
2572 | 2784 |
} |
2573 |
sqls.add(builder.toString()); |
|
2574 | 2785 |
} |
2786 |
|
|
2575 | 2787 |
for (Pair<String, String> pair : renames) { |
2576 |
StringBuilder builder = new StringBuilder(); |
|
2577 |
builder.append("ALTER TABLE "); |
|
2578 |
builder.append(this.table.toString(formatter)); |
|
2579 |
builder.append(" RENAME COLUMN "); |
|
2580 |
builder.append(as_identifier(pair.getLeft())); |
|
2581 |
builder.append(" TO "); |
|
2582 |
builder.append(as_identifier(pair.getRight())); |
|
2583 |
sqls.add(builder.toString()); |
|
2788 |
sqls.addAll(alter_table_alter_column_rename_sqls(formatter, pair.getLeft(), pair.getRight())); |
|
2584 | 2789 |
} |
2585 | 2790 |
return sqls; |
2586 | 2791 |
} |
... | ... | |
2771 | 2976 |
builder.append(Objects.toString(column.getDefaultValue(),"")); |
2772 | 2977 |
builder.append("'"); |
2773 | 2978 |
} |
2774 |
if (column.allowNulls()) { |
|
2775 |
builder.append(" NULL"); |
|
2776 |
} else { |
|
2979 |
if (column.isPrimaryKey()) { |
|
2777 | 2980 |
builder.append(" NOT NULL"); |
2778 |
} |
|
2779 |
if (column.isPrimaryKey()) { |
|
2780 | 2981 |
builder.append(" PRIMARY KEY"); |
2982 |
} else { |
|
2983 |
if (column.allowNulls()) { |
|
2984 |
builder.append(" NULL"); |
|
2985 |
} else { |
|
2986 |
builder.append(" NOT NULL"); |
|
2987 |
} |
|
2781 | 2988 |
} |
2782 | 2989 |
} |
2783 | 2990 |
builder.append(" )"); |
... | ... | |
3440 | 3647 |
protected DropIndexBuilder createDropIndexBuilder() { |
3441 | 3648 |
return new DropIndexBuilderBase(); |
3442 | 3649 |
} |
3443 |
|
|
3650 |
|
|
3444 | 3651 |
@Override |
3445 | 3652 |
public SelectBuilder select() { |
3446 | 3653 |
if (this.select == null) { |
Also available in: Unified diff