Skip to content

Commit

Permalink
增加MainIndexColumnTest
Browse files Browse the repository at this point in the history
  • Loading branch information
codefollower committed Oct 16, 2015
1 parent 0301110 commit c54d565
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 23 deletions.
3 changes: 1 addition & 2 deletions lealone-db/src/main/java/org/lealone/db/Database.java
Expand Up @@ -185,7 +185,7 @@ public class Database implements DataHandler, DbObject {
private final TransactionEngine transactionEngine;

private String fullName;
private String storageName; // 不使用原始的名称,按是用id替换数据库名
private String storageName; // 不使用原始的名称,而是用id替换数据库名

public Database(int id, String name, Map<String, String> parameters) {
this.id = id;
Expand Down Expand Up @@ -384,7 +384,6 @@ private void openMetaTable() {
cols.add(new Column("SQL", Value.STRING));
data.tableName = "SYS";
data.id = 0;
data.temporary = false;
data.persistData = persistent;
data.persistIndexes = persistent;
data.create = true;
Expand Down
Expand Up @@ -65,8 +65,8 @@ public StandardPrimaryIndex(Session session, StandardTable table) {
}
ValueDataType keyType = new ValueDataType(null, null, null);
ValueDataType valueType = new ValueDataType(database.getCompareMode(), database, sortTypes);
// mapName = getMapName("table", table.getSchema().getName(), table.getName(), getId());
mapName = getMapName("table", getId());
mapName = StandardTable.getMapNameForTable(getId());

Storage storage = database.getStorage(table.getStorageEngine());
TransactionEngine transactionEngine = database.getTransactionEngine();
// TODO处理内存表的情况!table.isPersistData()
Expand All @@ -77,16 +77,6 @@ public StandardPrimaryIndex(Session session, StandardTable table) {
lastKey = k == null ? 0 : k.getLong();
}

static String getMapName(Object... args) {
StringBuilder name = new StringBuilder();
for (Object arg : args) {
if (name.length() > 0)
name.append(Constants.NAME_SEPARATOR);
name.append(arg.toString());
}
return name.toString();
}

@Override
public String getCreateSQL() {
return null;
Expand Down
Expand Up @@ -50,16 +50,14 @@ public StandardSecondaryIndex(Session session, StandardTable table, int id, Stri
// always store the row key in the map key,
// even for unique indexes, as some of the index columns could be null
keyColumns = columns.length + 1;
// mapName = StandardPrimaryIndex.getMapName("index", table.getSchema().getName(), table.getName(), indexName,
// getId());
mapName = StandardPrimaryIndex.getMapName("index", getId());
int[] sortTypes = new int[keyColumns];
for (int i = 0; i < columns.length; i++) {
sortTypes[i] = columns[i].sortType;
}
sortTypes[keyColumns - 1] = SortOrder.ASCENDING;
ValueDataType keyType = new ValueDataType(db.getCompareMode(), db, sortTypes);
ValueDataType valueType = new ValueDataType(null, null, null);
mapName = StandardTable.getMapNameForIndex(getId());

Storage storage = database.getStorage(table.getStorageEngine());
TransactionEngine transactionEngine = database.getTransactionEngine();
Expand Down
Expand Up @@ -83,8 +83,8 @@ public class CreateTableData {
*/
public boolean isHidden;

public boolean isMemoryTable() {
return !session.getDatabase().isPersistent() || isHidden || globalTemporary || temporary || !persistData
|| id <= 0;
}
// public boolean isMemoryTable() {
// return !session.getDatabase().isPersistent() || isHidden || globalTemporary || temporary || !persistData
// || id <= 0;
// }
}
20 changes: 19 additions & 1 deletion lealone-db/src/main/java/org/lealone/db/table/StandardTable.java
Expand Up @@ -423,7 +423,7 @@ public Index addIndex(Session session, String indexName, int indexId, IndexColum
index = createDelegateIndex(indexId, indexName, indexType, mainIndexColumn);
} else {
if (database.isStarting()) {
if (database.getStorage(storageEngine).hasMap("index." + indexId)) {
if (database.getStorage(storageEngine).hasMap(getMapNameForIndex(indexId))) {
mainIndexColumn = -1;
}
} else if (primaryIndex.getRowCountMax() != 0) {
Expand Down Expand Up @@ -816,4 +816,22 @@ public boolean containsGlobalUniqueIndex() {
// public TransactionMap<Long, Long> getRowVersionMap() {
// return rowVersionMap;
// }

public static String getMapNameForTable(int id) {
return getMapName("table", id);
}

public static String getMapNameForIndex(int id) {
return getMapName("index", id);
}

private static String getMapName(Object... args) {
StringBuilder name = new StringBuilder();
for (Object arg : args) {
if (name.length() > 0)
name.append(Constants.NAME_SEPARATOR);
name.append(arg.toString());
}
return name.toString();
}
}
Expand Up @@ -27,7 +27,8 @@ public class CreateDatabaseTest extends SqlTestBase {
@Test
public void run() {
executeUpdate("CREATE DATABASE IF NOT EXISTS CreateDatabaseTest1");
executeUpdate("CREATE DATABASE IF NOT EXISTS CreateDatabaseTest2 TEMPORARY");
executeUpdate("CREATE DATABASE IF NOT EXISTS CreateDatabaseTest2 WITH(OPTIMIZE_DISTINCT=true, PERSISTENT=false)");
executeUpdate("CREATE DATABASE IF NOT EXISTS CreateDatabaseTest3 WITH()");

try {
stmt.executeUpdate("CREATE DATABASE CreateDatabaseTest1");
Expand Down
@@ -0,0 +1,40 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.lealone.test.sql.index;

import org.junit.Test;
import org.lealone.test.sql.SqlTestBase;

public class MainIndexColumnTest extends SqlTestBase {

@Test
public void run() {
executeUpdate("drop table IF EXISTS MainIndexColumnTest CASCADE");
executeUpdate("create table IF NOT EXISTS MainIndexColumnTest(id int not null, name varchar(50))");

executeUpdate("CREATE PRIMARY KEY IF NOT EXISTS MainIndexColumnTest_id ON MainIndexColumnTest(id)");

executeUpdate("insert into MainIndexColumnTest(id, name) values(10, 'a1')");
executeUpdate("insert into MainIndexColumnTest(id, name) values(20, 'b1')");
executeUpdate("insert into MainIndexColumnTest(id, name) values(30, 'a2')");

sql = "select * from MainIndexColumnTest";
printResultSet();
}

}

0 comments on commit c54d565

Please sign in to comment.