diff --git a/pom.xml b/pom.xml index eea92f3ee2..3483d58905 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ --> com.alibaba druid - 1.1.3-preview_11 + 1.1.3-preview_14 jar druid @@ -477,9 +477,9 @@ provided - postgresql + org.postgresql postgresql - 9.1-901-1.jdbc4 + 42.1.4 provided diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java index 52fd9c8660..2ece15db11 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLCreateTableStatement.java @@ -21,6 +21,7 @@ import java.util.*; import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.*; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; +import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.dialect.mysql.ast.MySqlKey; import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey; @@ -235,6 +236,9 @@ public class SQLCreateTableStatement extends SQLStatementImpl implements SQLDDLS if (column instanceof SQLIdentifierExpr && SQLUtils.nameEquals(columnName, ((SQLIdentifierExpr) column).getName())) { return unique.columns.size() > 1; + } else if (column instanceof SQLMethodInvokeExpr + && SQLUtils.nameEquals(((SQLMethodInvokeExpr) column).getMethodName(), columnName)) { + return true; } } else if (element instanceof MySqlKey) { MySqlKey unique = (MySqlKey) element; @@ -243,6 +247,9 @@ public class SQLCreateTableStatement extends SQLStatementImpl implements SQLDDLS if (column instanceof SQLIdentifierExpr && SQLUtils.nameEquals(columnName, ((SQLIdentifierExpr) column).getName())) { return true; + } else if (column instanceof SQLMethodInvokeExpr + && SQLUtils.nameEquals(((SQLMethodInvokeExpr) column).getMethodName(), columnName)) { + return true; } } } @@ -265,6 +272,9 @@ public class SQLCreateTableStatement extends SQLStatementImpl implements SQLDDLS if (column instanceof SQLIdentifierExpr && SQLUtils.nameEquals(columnName, ((SQLIdentifierExpr) column).getName())) { return unique.columns.size() == 1; + } else if (column instanceof SQLMethodInvokeExpr + && SQLUtils.nameEquals(((SQLMethodInvokeExpr) column).getMethodName(), columnName)) { + return true; } } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLGrantStatement.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLGrantStatement.java index 9d87f32c69..a4862e50e0 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLGrantStatement.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLGrantStatement.java @@ -48,6 +48,9 @@ public class SQLGrantStatement extends SQLStatementImpl { private boolean adminOption; private SQLExpr identifiedBy; + private String identifiedByPassword; + + private boolean withGrantOption; @Override protected void accept0(SQLASTVisitor visitor) { @@ -135,4 +138,20 @@ public class SQLGrantStatement extends SQLStatementImpl { public void setIdentifiedBy(SQLExpr identifiedBy) { this.identifiedBy = identifiedBy; } + + public String getIdentifiedByPassword() { + return identifiedByPassword; + } + + public void setIdentifiedByPassword(String identifiedByPassword) { + this.identifiedByPassword = identifiedByPassword; + } + + public boolean getWithGrantOption() { + return withGrantOption; + } + + public void setWithGrantOption(boolean withGrantOption) { + this.withGrantOption = withGrantOption; + } } diff --git a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUnique.java b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUnique.java index 3de043c2ed..2066d5aac6 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUnique.java +++ b/src/main/java/com/alibaba/druid/sql/ast/statement/SQLUnique.java @@ -22,6 +22,7 @@ import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; +import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; import com.alibaba.druid.sql.visitor.SQLASTVisitor; public class SQLUnique extends SQLConstraintImpl implements SQLUniqueConstraint, SQLTableElement { @@ -122,6 +123,12 @@ public class SQLUnique extends SQLConstraintImpl implements SQLUniqueConstraint, columns.remove(i); return true; } + + if (expr instanceof SQLMethodInvokeExpr + && SQLUtils.nameEquals(((SQLMethodInvokeExpr) expr).getMethodName(), columnName.getSimpleName())) { + columns.remove(i); + return true; + } } return false; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateTableStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateTableStatement.java index b5dd86e7c3..929ab8c4df 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlCreateTableStatement.java @@ -215,15 +215,16 @@ public class MySqlCreateTableStatement extends SQLCreateTableStatement implement } public boolean apply(SQLAlterTableAddIndex item) { - if (item.isKey()) { - MySqlPrimaryKey x = new MySqlPrimaryKey(); + if (item.isUnique()) { + MySqlUnique x = new MySqlUnique(); item.cloneTo(x); x.setParent(this); this.tableElementList.add(x); return true; } - if (item.isUnique()) { - MySqlUnique x = new MySqlUnique(); + + if (item.isKey()) { + MySqlKey x = new MySqlKey(); item.cloneTo(x); x.setParent(this); this.tableElementList.add(x); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlRenameTableStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlRenameTableStatement.java index 43732c3098..e75acb57fc 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlRenameTableStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlRenameTableStatement.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.sql.ast.SQLExpr; +import com.alibaba.druid.sql.ast.SQLName; import com.alibaba.druid.sql.dialect.mysql.ast.MySqlObjectImpl; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor; @@ -46,22 +47,22 @@ public class MySqlRenameTableStatement extends MySqlStatementImpl { public static class Item extends MySqlObjectImpl { - private SQLExpr name; - private SQLExpr to; + private SQLName name; + private SQLName to; - public SQLExpr getName() { + public SQLName getName() { return name; } - public void setName(SQLExpr name) { + public void setName(SQLName name) { this.name = name; } - public SQLExpr getTo() { + public SQLName getTo() { return to; } - public void setTo(SQLExpr to) { + public void setTo(SQLName to) { this.to = to; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlTableIndex.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlTableIndex.java index 7dbd304482..f720dab0ef 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlTableIndex.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlTableIndex.java @@ -21,6 +21,7 @@ import java.util.List; import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLName; +import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition; import com.alibaba.druid.sql.ast.statement.SQLSelectOrderByItem; import com.alibaba.druid.sql.ast.statement.SQLTableElement; @@ -29,8 +30,8 @@ import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor; public class MySqlTableIndex extends MySqlObjectImpl implements SQLTableElement { - private SQLName name; - private String indexType; + private SQLName name; + private String indexType; private List columns = new ArrayList(); public MySqlTableIndex(){ @@ -106,6 +107,11 @@ public class MySqlTableIndex extends MySqlObjectImpl implements SQLTableElement columns.remove(i); return true; } + if (expr instanceof SQLMethodInvokeExpr + && SQLUtils.nameEquals(((SQLMethodInvokeExpr) expr).getMethodName(), columnName.getSimpleName())) { + columns.remove(i); + return true; + } } return false; } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java index 2d9d378ac0..6d0ab311ee 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java @@ -785,6 +785,11 @@ public class MySqlExprParser extends SQLExprParser { lexer.nextToken(); } + if (lexer.token() != Token.LPAREN) { + SQLName name = this.name(); + primaryKey.setName(name); + } + accept(Token.LPAREN); for (;;) { primaryKey.addColumn(this.expr()); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java index 09df6d9aca..ed366f9f11 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java @@ -2464,7 +2464,7 @@ public class MySqlStatementParser extends SQLStatementParser { if (lexer.token() == Token.COLUMN) { lexer.nextToken(); parseAlterTableAddColumn(stmt); - } else if (lexer.token() == Token.INDEX) { + } else if (lexer.token() == Token.INDEX || identifierEquals("FULLTEXT")) { SQLAlterTableAddIndex item = parseAlterTableAddIndex(); item.setParent(stmt); stmt.addItem(item); @@ -2484,31 +2484,52 @@ public class MySqlStatementParser extends SQLStatementParser { stmt.addItem(item); } else if (lexer.token() == Token.CONSTRAINT) { lexer.nextToken(); - SQLName constraintName = this.exprParser.name(); if (lexer.token() == Token.PRIMARY) { SQLPrimaryKey primaryKey = ((MySqlExprParser) this.exprParser).parsePrimaryKey(); - - primaryKey.setName(constraintName); - SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(primaryKey); item.setParent(stmt); stmt.addItem(item); } else if (lexer.token() == Token.FOREIGN) { MysqlForeignKey fk = this.getExprParser().parseForeignKey(); - fk.setName(constraintName); fk.setHasConstraint(true); SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(fk); stmt.addItem(item); } else if (lexer.token() == Token.UNIQUE) { + SQLUnique unique = this.exprParser.parseUnique(); SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(unique); stmt.addItem(item); } else { - throw new ParserException("TODO " + lexer.info()); + SQLName constraintName = this.exprParser.name(); + + if (lexer.token() == Token.PRIMARY) { + SQLPrimaryKey primaryKey = ((MySqlExprParser) this.exprParser).parsePrimaryKey(); + + primaryKey.setName(constraintName); + + SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(primaryKey); + item.setParent(stmt); + + stmt.addItem(item); + } else if (lexer.token() == Token.FOREIGN) { + MysqlForeignKey fk = this.getExprParser().parseForeignKey(); + fk.setName(constraintName); + fk.setHasConstraint(true); + + SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(fk); + + stmt.addItem(item); + } else if (lexer.token() == Token.UNIQUE) { + SQLUnique unique = this.exprParser.parseUnique(); + SQLAlterTableAddConstraint item = new SQLAlterTableAddConstraint(unique); + stmt.addItem(item); + } else { + throw new ParserException("TODO " + lexer.info()); + } } } else if (lexer.token() == Token.PARTITION) { lexer.nextToken(); @@ -2647,7 +2668,7 @@ public class MySqlStatementParser extends SQLStatementParser { } MySqlRenameTableStatement renameStmt = new MySqlRenameTableStatement(); MySqlRenameTableStatement.Item item = new MySqlRenameTableStatement.Item(); - item.setName(stmt.getTableSource().getExpr()); + item.setName((SQLName) stmt.getTableSource().getExpr()); item.setTo(this.exprParser.name()); renameStmt.addItem(item); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java index a406f6774b..35974d92e9 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlOutputVisitor.java @@ -458,15 +458,21 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV @Override public boolean visit(MySqlTableIndex x) { + String indexType = x.getIndexType(); + + if ("FULLTEXT".equalsIgnoreCase(indexType)) { + print0(ucase ? "FULLTEXT " : "fulltext "); + } + print0(ucase ? "INDEX" : "index"); if (x.getName() != null) { print(' '); x.getName().accept(this); } - if (x.getIndexType() != null) { + if (indexType != null && !"FULLTEXT".equalsIgnoreCase(indexType)) { print0(ucase ? " USING " : " using "); - print0(x.getIndexType()); + print0(indexType); } print('('); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlShowColumnOutpuVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlShowColumnOutpuVisitor.java index db5da616b7..c034b5bbd3 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlShowColumnOutpuVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlShowColumnOutpuVisitor.java @@ -133,9 +133,9 @@ public class MySqlShowColumnOutpuVisitor extends MySqlOutputVisitor { print(" | "); if (column.containsNotNullConstaint()) { - print("YES"); - } else { print("NO "); + } else { + print("YES"); } print(" | "); diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java index 48be41c963..f63b5a12eb 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java @@ -613,7 +613,24 @@ public class SQLStatementParser extends SQLParser { if (lexer.token() == Token.IDENTIFIED) { lexer.nextToken(); accept(Token.BY); - stmt.setIdentifiedBy(this.exprParser.expr()); + + if (identifierEquals("PASSWORD")) { + lexer.nextToken(); + String password = lexer.stringVal(); + accept(Token.LITERAL_CHARS); + stmt.setIdentifiedByPassword(password); + } else { + stmt.setIdentifiedBy(this.exprParser.expr()); + } + } + + if (lexer.token() == Token.WITH) { + lexer.nextToken(); + if (lexer.token() == Token.GRANT) { + lexer.nextToken(); + acceptIdentifier("OPTION"); + stmt.setWithGrantOption(true); + } } return stmt; @@ -626,6 +643,7 @@ public class SQLStatementParser extends SQLParser { lexer.nextToken(); if (identifierEquals("PRIVILEGES")) { privilege = "ALL PRIVILEGES"; + lexer.nextToken(); } else { privilege = "ALL"; } @@ -2403,6 +2421,11 @@ public class SQLStatementParser extends SQLParser { protected SQLAlterTableAddIndex parseAlterTableAddIndex() { SQLAlterTableAddIndex item = new SQLAlterTableAddIndex(); + if (identifierEquals("FULLTEXT")) { + lexer.nextToken(); + item.setType("FULLTEXT"); + } + if (lexer.token() == Token.UNIQUE) { item.setUnique(true); lexer.nextToken(); diff --git a/src/main/java/com/alibaba/druid/sql/repository/SchemaRepository.java b/src/main/java/com/alibaba/druid/sql/repository/SchemaRepository.java index 4e5693135d..574cf405d4 100644 --- a/src/main/java/com/alibaba/druid/sql/repository/SchemaRepository.java +++ b/src/main/java/com/alibaba/druid/sql/repository/SchemaRepository.java @@ -22,10 +22,7 @@ import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.ast.statement.*; -import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement; -import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock; -import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowColumnsStatement; -import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlShowCreateTableStatement; +import com.alibaba.druid.sql.dialect.mysql.ast.statement.*; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitorAdapter; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleCreateTableStatement; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectQueryBlock; @@ -283,8 +280,17 @@ public class SchemaRepository { MySqlShowCreateTableStatement showCreateTableStmt = (MySqlShowCreateTableStatement) stmt; SQLName table = showCreateTableStmt.getName(); SchemaObject schemaObject = findTable(table); - MySqlCreateTableStatement createTableStmt = (MySqlCreateTableStatement) schemaObject.getStatement(); - createTableStmt.output(buf); + if (schemaObject == null) { + buf.append("ERROR 1146 (42S02): Table '" + table + "' doesn't exist\n"); + } else { + MySqlCreateTableStatement createTableStmt = (MySqlCreateTableStatement) schemaObject.getStatement(); + createTableStmt.output(buf); + } + } else if (stmt instanceof MySqlRenameTableStatement) { + MySqlRenameTableStatement renameStmt = (MySqlRenameTableStatement) stmt; + for (MySqlRenameTableStatement.Item item : renameStmt.getItems()) { + renameTable(item.getName(), item.getTo()); + } } else if (stmt instanceof SQLShowTablesStatement) { SQLShowTablesStatement showTables = (SQLShowTablesStatement) stmt; SQLName database = showTables.getDatabase(); @@ -337,6 +343,36 @@ public class SchemaRepository { return null; } + private boolean renameTable(SQLName name, SQLName to) { + Schema schema; + if (name instanceof SQLPropertyExpr) { + String schemaName = ((SQLPropertyExpr) name).getOwnernName(); + schema = findSchema(schemaName); + } else { + schema = getDefaultSchema(); + } + + if (schema == null) { + return false; + } + + String tableName = name.getSimpleName(); + SchemaObject schemaObject = schema.findTable(tableName); + if (schemaObject != null) { + MySqlCreateTableStatement createTableStmt = (MySqlCreateTableStatement) schemaObject.getStatement(); + if (createTableStmt != null) { + createTableStmt.setName(to.clone()); + } + + String toName = SQLUtils.normalize(to.getSimpleName()).toLowerCase(); + schema.objects.put(toName, schemaObject); + + String name_lower = SQLUtils.normalize(tableName).toLowerCase(); + schema.objects.remove(name_lower); + } + return true; + } + private class MySqlResolveVisitor extends MySqlASTVisitorAdapter implements SchemaResolveVisitor { private int options; diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlCreateTable_showColumns_repository_test.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlCreateTable_showColumns_repository_test.java index 565c14b7ef..42ff855097 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlCreateTable_showColumns_repository_test.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlCreateTable_showColumns_repository_test.java @@ -65,23 +65,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+---------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+---------------+------+-----+---------------------+-----------------------------+\n" + - "| id | bigint(20) | YES | PRI | NULL | auto_increment |\n" + - "| c_tinyint | tinyint(4) | NO | PRI | 1 | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_decimal | decimal(10,3) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | MUL | NULL | |\n" + - "| c_varchar | varchar(10) | NO | MUL | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| id | bigint(20) | NO | PRI | NULL | auto_increment |\n" + + "| c_tinyint | tinyint(4) | YES | PRI | 1 | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_decimal | decimal(10,3) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | MUL | NULL | |\n" + + "| c_varchar | varchar(10) | YES | MUL | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+---------------+------+-----+---------------------+-----------------------------+\n", repository.console("show columns from test1")); repository.console("alter table test1 drop column c_decimal;"); @@ -90,22 +90,22 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + - "| id | bigint(20) | YES | PRI | NULL | auto_increment |\n" + - "| c_tinyint | tinyint(4) | NO | PRI | 1 | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | MUL | NULL | |\n" + - "| c_varchar | varchar(10) | NO | MUL | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| id | bigint(20) | NO | PRI | NULL | auto_increment |\n" + + "| c_tinyint | tinyint(4) | YES | PRI | 1 | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | MUL | NULL | |\n" + + "| c_varchar | varchar(10) | YES | MUL | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n", repository.console("show columns from test1")); repository.console("alter table test1 add column c_decimal decimal(10,3) DEFAULT NULL COMMENT 'decimal';"); @@ -114,23 +114,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+---------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+---------------+------+-----+---------------------+-----------------------------+\n" + - "| id | bigint(20) | YES | PRI | NULL | auto_increment |\n" + - "| c_tinyint | tinyint(4) | NO | PRI | 1 | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | MUL | NULL | |\n" + - "| c_varchar | varchar(10) | NO | MUL | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + - "| c_decimal | decimal(10,3) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | PRI | NULL | auto_increment |\n" + + "| c_tinyint | tinyint(4) | YES | PRI | 1 | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | MUL | NULL | |\n" + + "| c_varchar | varchar(10) | YES | MUL | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + + "| c_decimal | decimal(10,3) | YES | | NULL | |\n" + "+--------------+---------------+------+-----+---------------------+-----------------------------+\n", repository.console("show columns from test1")); repository.console("ALTER TABLE test1 CHANGE COLUMN c_decimal c_decimal_1 INT(11) NOT NULL DEFAULT NULL FIRST id;"); @@ -140,23 +140,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + - "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + - "| id | bigint(20) | YES | PRI | NULL | auto_increment |\n" + - "| c_tinyint | tinyint(4) | NO | PRI | 1 | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | MUL | NULL | |\n" + - "| c_varchar | varchar(10) | NO | MUL | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | PRI | NULL | auto_increment |\n" + + "| c_tinyint | tinyint(4) | YES | PRI | 1 | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | MUL | NULL | |\n" + + "| c_varchar | varchar(10) | YES | MUL | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n", repository.console("show columns from test1")); repository.console("ALTER TABLE test1 DROP PRIMARY KEY;"); @@ -189,23 +189,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + - "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + - "| id | bigint(20) | YES | | NULL | auto_increment |\n" + - "| c_tinyint | tinyint(4) | NO | MUL | 1 | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | MUL | NULL | |\n" + - "| c_varchar | varchar(10) | NO | MUL | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | | NULL | auto_increment |\n" + + "| c_tinyint | tinyint(4) | YES | MUL | 1 | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | MUL | NULL | |\n" + + "| c_varchar | varchar(10) | YES | MUL | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n", repository.console("show columns from test1")); repository.console("ALTER TABLE test1 DROP INDEX k_d;"); @@ -236,23 +236,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + - "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + - "| id | bigint(20) | YES | | NULL | auto_increment |\n" + - "| c_tinyint | tinyint(4) | NO | MUL | 1 | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | | NULL | |\n" + - "| c_varchar | varchar(10) | NO | MUL | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | | NULL | auto_increment |\n" + + "| c_tinyint | tinyint(4) | YES | MUL | 1 | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | MUL | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n", repository.console("show columns from test1")); @@ -283,23 +283,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + - "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + - "| id | bigint(20) | YES | | NULL | auto_increment |\n" + - "| c_tinyint | tinyint(4) | NO | MUL | 1 | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | | NULL | |\n" + - "| c_varchar | varchar(10) | NO | | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | | NULL | auto_increment |\n" + + "| c_tinyint | tinyint(4) | YES | MUL | 1 | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n", repository.console("show columns from test1")); repository.console("CREATE TABLE test2 like test1"); @@ -349,23 +349,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------+-------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------+-------+\n" + - "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + - "| id | bigint(20) | NO | | NULL | |\n" + - "| c_tinyint | tinyint(4) | NO | | NULL | |\n" + - "| c_smallint | smallint(6) | NO | | NULL | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | NULL | |\n" + - "| c_datetime | datetime | NO | | NULL | |\n" + - "| c_timestamp | timestamp | NO | | NULL | |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | | NULL | |\n" + - "| c_varchar | varchar(10) | NO | | NULL | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + + "| id | bigint(20) | YES | | NULL | |\n" + + "| c_tinyint | tinyint(4) | YES | | NULL | |\n" + + "| c_smallint | smallint(6) | YES | | NULL | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | NULL | |\n" + + "| c_datetime | datetime | YES | | NULL | |\n" + + "| c_timestamp | timestamp | YES | | NULL | |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | | NULL | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------+-------+\n", repository.console("show columns from test3")); repository.console("alter TABLE test3 add UNIQUE(c_tinyint)"); @@ -373,23 +373,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------+-------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------+-------+\n" + - "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + - "| id | bigint(20) | NO | | NULL | |\n" + - "| c_tinyint | tinyint(4) | NO | UNI | NULL | |\n" + - "| c_smallint | smallint(6) | NO | | NULL | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | NULL | |\n" + - "| c_datetime | datetime | NO | | NULL | |\n" + - "| c_timestamp | timestamp | NO | | NULL | |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | | NULL | |\n" + - "| c_varchar | varchar(10) | NO | | NULL | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + + "| id | bigint(20) | YES | | NULL | |\n" + + "| c_tinyint | tinyint(4) | YES | UNI | NULL | |\n" + + "| c_smallint | smallint(6) | YES | | NULL | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | NULL | |\n" + + "| c_datetime | datetime | YES | | NULL | |\n" + + "| c_timestamp | timestamp | YES | | NULL | |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | | NULL | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------+-------+\n", repository.console("show columns from test3")); repository.console("alter TABLE test3 add PRIMARY KEY(id)"); @@ -397,23 +397,23 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------+-------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------+-------+\n" + - "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + - "| id | bigint(20) | NO | PRI | NULL | |\n" + - "| c_tinyint | tinyint(4) | NO | UNI | NULL | |\n" + - "| c_smallint | smallint(6) | NO | | NULL | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | NULL | |\n" + - "| c_datetime | datetime | NO | | NULL | |\n" + - "| c_timestamp | timestamp | NO | | NULL | |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | | NULL | |\n" + - "| c_varchar | varchar(10) | NO | | NULL | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + + "| id | bigint(20) | YES | PRI | NULL | |\n" + + "| c_tinyint | tinyint(4) | YES | UNI | NULL | |\n" + + "| c_smallint | smallint(6) | YES | | NULL | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | NULL | |\n" + + "| c_datetime | datetime | YES | | NULL | |\n" + + "| c_timestamp | timestamp | YES | | NULL | |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | | NULL | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------+-------+\n", repository.console("show columns from test3")); repository.console("CREATE TABLE test4 as select a.* from test2 a"); @@ -586,22 +586,22 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + - "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + - "| id | bigint(20) | YES | | NULL | auto_increment |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | MUL | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | | NULL | |\n" + - "| c_varchar | varchar(10) | NO | | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | | NULL | auto_increment |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | MUL | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" , repository.console("show columns from test1")); @@ -658,24 +658,286 @@ public class MySqlCreateTable_showColumns_repository_test extends MysqlTest { assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + - "| c_decimal_1 | INT(11) | YES | | NULL | |\n" + - "| id | bigint(20) | YES | | NULL | auto_increment |\n" + - "| c_char | char(32) | NO | | NULL | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | MUL | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_varchar | varchar(10) | NO | | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | | NULL | auto_increment |\n" + + "| c_char | char(32) | YES | | NULL | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | MUL | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" , repository.console("show columns from test1")); + + + repository.console("alter table test1 add CONSTRAINT unique name4_idx(id); "); + + assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + + "| Field | Type | Null | Key | Default | Extra |\n" + + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + + "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | UNI | NULL | auto_increment |\n" + + "| c_char | char(32) | YES | | NULL | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | MUL | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + + , repository.console("show columns from test1")); + + repository.console("alter table test1 add FULLTEXT name4_idx_c_longblob(c_longblob); "); + + assertEquals("CREATE TABLE `test1` (\n" + + "\tc_decimal_1 INT(11) NOT NULL DEFAULT NULL,\n" + + "\t`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + "\tc_char char(32),\n" + + "\t`c_smallint` smallint(6) DEFAULT 0 COMMENT 'smallint',\n" + + "\t`c_mediumint` mediumint(9) DEFAULT NULL COMMENT 'mediumint',\n" + + "\t`c_int` int(11) DEFAULT NULL COMMENT 'int',\n" + + "\t`c_bigint` bigint(20) DEFAULT NULL COMMENT 'bigint',\n" + + "\t`c_date` date DEFAULT '0000-00-00' COMMENT 'date',\n" + + "\t`c_datetime` datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'datetime',\n" + + "\t`c_timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'timestamp',\n" + + "\t`c_time` time DEFAULT NULL COMMENT 'time',\n" + + "\t`c_varchar` varchar(10) DEFAULT 'hello' COMMENT 'varchar',\n" + + "\t`c_blob` blob COMMENT 'blob',\n" + + "\t`c_text` text COMMENT 'text',\n" + + "\t`c_mediumtext` mediumtext COMMENT 'mediumtext',\n" + + "\t`c_longblob` longblob COMMENT 'longblob',\n" + + "\tKEY `k_c` (`c_int`),\n" + + "\tUNIQUE name4_idx (id),\n" + + "\tFULLTEXT INDEX name4_idx_c_longblob(c_longblob)\n" + + ") ENGINE = InnoDB AUTO_INCREMENT = 1769503 CHARSET = utf8mb4 COMMENT = '10000000'" + + , repository.console("show create table test1")); + + + repository.console("alter table test1 add key name5_idx(c_bigint); "); + + assertEquals("CREATE TABLE `test1` (\n" + + "\tc_decimal_1 INT(11) NOT NULL DEFAULT NULL,\n" + + "\t`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + "\tc_char char(32),\n" + + "\t`c_smallint` smallint(6) DEFAULT 0 COMMENT 'smallint',\n" + + "\t`c_mediumint` mediumint(9) DEFAULT NULL COMMENT 'mediumint',\n" + + "\t`c_int` int(11) DEFAULT NULL COMMENT 'int',\n" + + "\t`c_bigint` bigint(20) DEFAULT NULL COMMENT 'bigint',\n" + + "\t`c_date` date DEFAULT '0000-00-00' COMMENT 'date',\n" + + "\t`c_datetime` datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'datetime',\n" + + "\t`c_timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'timestamp',\n" + + "\t`c_time` time DEFAULT NULL COMMENT 'time',\n" + + "\t`c_varchar` varchar(10) DEFAULT 'hello' COMMENT 'varchar',\n" + + "\t`c_blob` blob COMMENT 'blob',\n" + + "\t`c_text` text COMMENT 'text',\n" + + "\t`c_mediumtext` mediumtext COMMENT 'mediumtext',\n" + + "\t`c_longblob` longblob COMMENT 'longblob',\n" + + "\tKEY `k_c` (`c_int`),\n" + + "\tUNIQUE name4_idx (id),\n" + + "\tFULLTEXT INDEX name4_idx_c_longblob(c_longblob),\n" + + "\tKEY name5_idx (c_bigint)\n" + + ") ENGINE = InnoDB AUTO_INCREMENT = 1769503 CHARSET = utf8mb4 COMMENT = '10000000'" + + , repository.console("show create table test1")); + + repository.console("alter table test1 drop index name4_idx"); + assertEquals("CREATE TABLE `test1` (\n" + + "\tc_decimal_1 INT(11) NOT NULL DEFAULT NULL,\n" + + "\t`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + "\tc_char char(32),\n" + + "\t`c_smallint` smallint(6) DEFAULT 0 COMMENT 'smallint',\n" + + "\t`c_mediumint` mediumint(9) DEFAULT NULL COMMENT 'mediumint',\n" + + "\t`c_int` int(11) DEFAULT NULL COMMENT 'int',\n" + + "\t`c_bigint` bigint(20) DEFAULT NULL COMMENT 'bigint',\n" + + "\t`c_date` date DEFAULT '0000-00-00' COMMENT 'date',\n" + + "\t`c_datetime` datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'datetime',\n" + + "\t`c_timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'timestamp',\n" + + "\t`c_time` time DEFAULT NULL COMMENT 'time',\n" + + "\t`c_varchar` varchar(10) DEFAULT 'hello' COMMENT 'varchar',\n" + + "\t`c_blob` blob COMMENT 'blob',\n" + + "\t`c_text` text COMMENT 'text',\n" + + "\t`c_mediumtext` mediumtext COMMENT 'mediumtext',\n" + + "\t`c_longblob` longblob COMMENT 'longblob',\n" + + "\tKEY `k_c` (`c_int`),\n" + + "\tFULLTEXT INDEX name4_idx_c_longblob(c_longblob),\n" + + "\tKEY name5_idx (c_bigint)\n" + + ") ENGINE = InnoDB AUTO_INCREMENT = 1769503 CHARSET = utf8mb4 COMMENT = '10000000'" + + , repository.console("show create table test1")); + + repository.console("alter table test1 add primary key name5_pk(c_bigint); "); + assertEquals("CREATE TABLE `test1` (\n" + + "\tc_decimal_1 INT(11) NOT NULL DEFAULT NULL,\n" + + "\t`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + "\tc_char char(32),\n" + + "\t`c_smallint` smallint(6) DEFAULT 0 COMMENT 'smallint',\n" + + "\t`c_mediumint` mediumint(9) DEFAULT NULL COMMENT 'mediumint',\n" + + "\t`c_int` int(11) DEFAULT NULL COMMENT 'int',\n" + + "\t`c_bigint` bigint(20) DEFAULT NULL COMMENT 'bigint',\n" + + "\t`c_date` date DEFAULT '0000-00-00' COMMENT 'date',\n" + + "\t`c_datetime` datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'datetime',\n" + + "\t`c_timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'timestamp',\n" + + "\t`c_time` time DEFAULT NULL COMMENT 'time',\n" + + "\t`c_varchar` varchar(10) DEFAULT 'hello' COMMENT 'varchar',\n" + + "\t`c_blob` blob COMMENT 'blob',\n" + + "\t`c_text` text COMMENT 'text',\n" + + "\t`c_mediumtext` mediumtext COMMENT 'mediumtext',\n" + + "\t`c_longblob` longblob COMMENT 'longblob',\n" + + "\tKEY `k_c` (`c_int`),\n" + + "\tFULLTEXT INDEX name4_idx_c_longblob(c_longblob),\n" + + "\tKEY name5_idx (c_bigint),\n" + + "\tCONSTRAINT name5_pk PRIMARY KEY (c_bigint)\n" + + ") ENGINE = InnoDB AUTO_INCREMENT = 1769503 CHARSET = utf8mb4 COMMENT = '10000000'" + + , repository.console("show create table test1")); + + repository.console("alter table test1 drop primary key;"); + assertEquals("CREATE TABLE `test1` (\n" + + "\tc_decimal_1 INT(11) NOT NULL DEFAULT NULL,\n" + + "\t`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + "\tc_char char(32),\n" + + "\t`c_smallint` smallint(6) DEFAULT 0 COMMENT 'smallint',\n" + + "\t`c_mediumint` mediumint(9) DEFAULT NULL COMMENT 'mediumint',\n" + + "\t`c_int` int(11) DEFAULT NULL COMMENT 'int',\n" + + "\t`c_bigint` bigint(20) DEFAULT NULL COMMENT 'bigint',\n" + + "\t`c_date` date DEFAULT '0000-00-00' COMMENT 'date',\n" + + "\t`c_datetime` datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'datetime',\n" + + "\t`c_timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'timestamp',\n" + + "\t`c_time` time DEFAULT NULL COMMENT 'time',\n" + + "\t`c_varchar` varchar(10) DEFAULT 'hello' COMMENT 'varchar',\n" + + "\t`c_blob` blob COMMENT 'blob',\n" + + "\t`c_text` text COMMENT 'text',\n" + + "\t`c_mediumtext` mediumtext COMMENT 'mediumtext',\n" + + "\t`c_longblob` longblob COMMENT 'longblob',\n" + + "\tKEY `k_c` (`c_int`),\n" + + "\tFULLTEXT INDEX name4_idx_c_longblob(c_longblob),\n" + + "\tKEY name5_idx (c_bigint)\n" + + ") ENGINE = InnoDB AUTO_INCREMENT = 1769503 CHARSET = utf8mb4 COMMENT = '10000000'" + + , repository.console("show create table test1")); + + repository.console("GRANT ALL PRIVILEGES ON *.* TO 'idbtmp_1208408_9'@'%' IDENTIFIED BY PASSWORD '*5E8A11FF574FCBC6440EB285D490AEE96B16E250' WITH GRANT OPTION"); + + repository.console("alter table test1 add unique key name_idx_23 (c_char(10))"); + assertEquals("CREATE TABLE `test1` (\n" + + "\tc_decimal_1 INT(11) NOT NULL DEFAULT NULL,\n" + + "\t`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + "\tc_char char(32),\n" + + "\t`c_smallint` smallint(6) DEFAULT 0 COMMENT 'smallint',\n" + + "\t`c_mediumint` mediumint(9) DEFAULT NULL COMMENT 'mediumint',\n" + + "\t`c_int` int(11) DEFAULT NULL COMMENT 'int',\n" + + "\t`c_bigint` bigint(20) DEFAULT NULL COMMENT 'bigint',\n" + + "\t`c_date` date DEFAULT '0000-00-00' COMMENT 'date',\n" + + "\t`c_datetime` datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'datetime',\n" + + "\t`c_timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'timestamp',\n" + + "\t`c_time` time DEFAULT NULL COMMENT 'time',\n" + + "\t`c_varchar` varchar(10) DEFAULT 'hello' COMMENT 'varchar',\n" + + "\t`c_blob` blob COMMENT 'blob',\n" + + "\t`c_text` text COMMENT 'text',\n" + + "\t`c_mediumtext` mediumtext COMMENT 'mediumtext',\n" + + "\t`c_longblob` longblob COMMENT 'longblob',\n" + + "\tKEY `k_c` (`c_int`),\n" + + "\tFULLTEXT INDEX name4_idx_c_longblob(c_longblob),\n" + + "\tKEY name5_idx (c_bigint),\n" + + "\tUNIQUE name_idx_23 (c_char(10))\n" + + ") ENGINE = InnoDB AUTO_INCREMENT = 1769503 CHARSET = utf8mb4 COMMENT = '10000000'" + + , repository.console("show create table test1")); + + + assertEquals("+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + + "| Field | Type | Null | Key | Default | Extra |\n" + + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + + "| c_decimal_1 | INT(11) | NO | | NULL | |\n" + + "| id | bigint(20) | NO | | NULL | auto_increment |\n" + + "| c_char | char(32) | YES | UNI | NULL | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | MUL | NULL | |\n" + + "| c_bigint | bigint(20) | YES | MUL | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_varchar | varchar(10) | YES | | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + + "+--------------+--------------+------+-----+---------------------+-----------------------------+\n" + + , repository.console("show columns from test1")); + + repository.console("alter table test1 drop c_char;"); + assertEquals("CREATE TABLE `test1` (\n" + + "\tc_decimal_1 INT(11) NOT NULL DEFAULT NULL,\n" + + "\t`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + "\t`c_smallint` smallint(6) DEFAULT 0 COMMENT 'smallint',\n" + + "\t`c_mediumint` mediumint(9) DEFAULT NULL COMMENT 'mediumint',\n" + + "\t`c_int` int(11) DEFAULT NULL COMMENT 'int',\n" + + "\t`c_bigint` bigint(20) DEFAULT NULL COMMENT 'bigint',\n" + + "\t`c_date` date DEFAULT '0000-00-00' COMMENT 'date',\n" + + "\t`c_datetime` datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'datetime',\n" + + "\t`c_timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'timestamp',\n" + + "\t`c_time` time DEFAULT NULL COMMENT 'time',\n" + + "\t`c_varchar` varchar(10) DEFAULT 'hello' COMMENT 'varchar',\n" + + "\t`c_blob` blob COMMENT 'blob',\n" + + "\t`c_text` text COMMENT 'text',\n" + + "\t`c_mediumtext` mediumtext COMMENT 'mediumtext',\n" + + "\t`c_longblob` longblob COMMENT 'longblob',\n" + + "\tKEY `k_c` (`c_int`),\n" + + "\tFULLTEXT INDEX name4_idx_c_longblob(c_longblob),\n" + + "\tKEY name5_idx (c_bigint)\n" + + ") ENGINE = InnoDB AUTO_INCREMENT = 1769503 CHARSET = utf8mb4 COMMENT = '10000000'" + + , repository.console("show create table test1")); + + repository.console("rename table test1 to test1_xx"); + + assertEquals("ERROR 1146 (42S02): Table 'test1' doesn't exist\n" + + , repository.console("show create table test1")); + + assertEquals("CREATE TABLE test1_xx (\n" + + "\tc_decimal_1 INT(11) NOT NULL DEFAULT NULL,\n" + + "\t`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',\n" + + "\t`c_smallint` smallint(6) DEFAULT 0 COMMENT 'smallint',\n" + + "\t`c_mediumint` mediumint(9) DEFAULT NULL COMMENT 'mediumint',\n" + + "\t`c_int` int(11) DEFAULT NULL COMMENT 'int',\n" + + "\t`c_bigint` bigint(20) DEFAULT NULL COMMENT 'bigint',\n" + + "\t`c_date` date DEFAULT '0000-00-00' COMMENT 'date',\n" + + "\t`c_datetime` datetime DEFAULT '0000-00-00 00:00:00' COMMENT 'datetime',\n" + + "\t`c_timestamp` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'timestamp',\n" + + "\t`c_time` time DEFAULT NULL COMMENT 'time',\n" + + "\t`c_varchar` varchar(10) DEFAULT 'hello' COMMENT 'varchar',\n" + + "\t`c_blob` blob COMMENT 'blob',\n" + + "\t`c_text` text COMMENT 'text',\n" + + "\t`c_mediumtext` mediumtext COMMENT 'mediumtext',\n" + + "\t`c_longblob` longblob COMMENT 'longblob',\n" + + "\tKEY `k_c` (`c_int`),\n" + + "\tFULLTEXT INDEX name4_idx_c_longblob(c_longblob),\n" + + "\tKEY name5_idx (c_bigint)\n" + + ") ENGINE = InnoDB AUTO_INCREMENT = 1769503 CHARSET = utf8mb4 COMMENT = '10000000'" + + , repository.console("show create table test1_xx")); + } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlCreateTable_showColumns_test.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlCreateTable_showColumns_test.java index c6adbf0019..3a0c89a226 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlCreateTable_showColumns_test.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/select/MySqlCreateTable_showColumns_test.java @@ -65,23 +65,23 @@ public class MySqlCreateTable_showColumns_test extends MysqlTest { assertEquals("+--------------+---------------+------+-----+---------------------+-----------------------------+\n" + "| Field | Type | Null | Key | Default | Extra |\n" + "+--------------+---------------+------+-----+---------------------+-----------------------------+\n" + - "| id | bigint(20) | YES | PRI | NULL | auto_increment |\n" + - "| c_tinyint | tinyint(4) | NO | PRI | 1 | |\n" + - "| c_smallint | smallint(6) | NO | | 0 | |\n" + - "| c_mediumint | mediumint(9) | NO | | NULL | |\n" + - "| c_int | int(11) | NO | | NULL | |\n" + - "| c_bigint | bigint(20) | NO | | NULL | |\n" + - "| c_decimal | decimal(10,3) | NO | | NULL | |\n" + - "| c_date | date | NO | | 0000-00-00 | |\n" + - "| c_datetime | datetime | NO | | 0000-00-00 00:00:00 | |\n" + - "| c_timestamp | timestamp | NO | | NULL | on update CURRENT_TIMESTAMP |\n" + - "| c_time | time | NO | | NULL | |\n" + - "| c_char | char(10) | NO | MUL | NULL | |\n" + - "| c_varchar | varchar(10) | NO | MUL | hello | |\n" + - "| c_blob | blob | NO | | NULL | |\n" + - "| c_text | text | NO | | NULL | |\n" + - "| c_mediumtext | mediumtext | NO | | NULL | |\n" + - "| c_longblob | longblob | NO | | NULL | |\n" + + "| id | bigint(20) | NO | PRI | NULL | auto_increment |\n" + + "| c_tinyint | tinyint(4) | YES | PRI | 1 | |\n" + + "| c_smallint | smallint(6) | YES | | 0 | |\n" + + "| c_mediumint | mediumint(9) | YES | | NULL | |\n" + + "| c_int | int(11) | YES | | NULL | |\n" + + "| c_bigint | bigint(20) | YES | | NULL | |\n" + + "| c_decimal | decimal(10,3) | YES | | NULL | |\n" + + "| c_date | date | YES | | 0000-00-00 | |\n" + + "| c_datetime | datetime | YES | | 0000-00-00 00:00:00 | |\n" + + "| c_timestamp | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP |\n" + + "| c_time | time | YES | | NULL | |\n" + + "| c_char | char(10) | YES | MUL | NULL | |\n" + + "| c_varchar | varchar(10) | YES | MUL | hello | |\n" + + "| c_blob | blob | YES | | NULL | |\n" + + "| c_text | text | YES | | NULL | |\n" + + "| c_mediumtext | mediumtext | YES | | NULL | |\n" + + "| c_longblob | longblob | YES | | NULL | |\n" + "+--------------+---------------+------+-----+---------------------+-----------------------------+\n", buf.toString()); } }