提交 9df18b68 authored 作者: noelgrandin's avatar noelgrandin

fix potential NPE in MetaTable

上级 6c9c427d
...@@ -582,19 +582,17 @@ public class MetaTable extends Table { ...@@ -582,19 +582,17 @@ public class MetaTable extends Table {
return true; return true;
} }
Database db = session.getDatabase(); Database db = session.getDatabase();
Value v;
if (database.getMode().lowerCaseIdentifiers) { if (database.getMode().lowerCaseIdentifiers) {
Value v = ValueStringIgnoreCase.get(value); v = ValueStringIgnoreCase.get(value);
if (indexFrom.equals(indexTo) && db.compare(v, indexFrom) != 0) {
return false;
}
} else { } else {
Value v = ValueString.get(value); v = ValueString.get(value);
if (indexFrom != null && db.compare(v, indexFrom) < 0) { }
return false; if (indexFrom != null && db.compare(v, indexFrom) < 0) {
} return false;
if (indexTo != null && db.compare(v, indexTo) > 0) { }
return false; if (indexTo != null && db.compare(v, indexTo) > 0) {
} return false;
} }
return true; return true;
} }
......
...@@ -252,6 +252,10 @@ public class TestCompatibility extends TestBase { ...@@ -252,6 +252,10 @@ public class TestCompatibility extends TestBase {
rs.updateString(2, "Hallo"); rs.updateString(2, "Hallo");
rs.updateRow(); rs.updateRow();
// we used to have an NPE bug in the MetaTable#checkIndex() method
rs = stat.executeQuery("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME > 'aaaa'");
rs = stat.executeQuery("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME < 'aaaa'");
stat.execute("CREATE TABLE TEST_1(ID INT PRIMARY KEY) ENGINE=InnoDb"); stat.execute("CREATE TABLE TEST_1(ID INT PRIMARY KEY) ENGINE=InnoDb");
stat.execute("CREATE TABLE TEST_2(ID INT PRIMARY KEY) ENGINE=MyISAM"); stat.execute("CREATE TABLE TEST_2(ID INT PRIMARY KEY) ENGINE=MyISAM");
stat.execute("CREATE TABLE TEST_3(ID INT PRIMARY KEY) ENGINE=InnoDb charset=UTF8"); stat.execute("CREATE TABLE TEST_3(ID INT PRIMARY KEY) ENGINE=InnoDb charset=UTF8");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论