提交 81de3207 authored 作者: Niklas Mehner's avatar Niklas Mehner

Start implementing function synonyms.

上级 4ec5fe64
...@@ -8,6 +8,7 @@ package org.h2.command.ddl; ...@@ -8,6 +8,7 @@ package org.h2.command.ddl;
import org.h2.api.ErrorCode; import org.h2.api.ErrorCode;
import org.h2.command.CommandInterface; import org.h2.command.CommandInterface;
import org.h2.engine.Database; import org.h2.engine.Database;
import org.h2.engine.FunctionAlias;
import org.h2.engine.Session; import org.h2.engine.Session;
import org.h2.message.DbException; import org.h2.message.DbException;
import org.h2.schema.Schema; import org.h2.schema.Schema;
...@@ -54,14 +55,12 @@ public class CreateSynonym extends SchemaCommand { ...@@ -54,14 +55,12 @@ public class CreateSynonym extends SchemaCommand {
} }
Database db = session.getDatabase(); Database db = session.getDatabase();
data.session = session; data.session = session;
// TODO: Check when/if meta data is unlocked...
db.lockMeta(session); db.lockMeta(session);
// This call throws an exception if the table does not exist.
if (data.synonymForSchema.findTableOrView(session, data.synonymFor) != null) { if (data.synonymForSchema.findTableOrView(session, data.synonymFor) != null) {
return createTableSynonym(db); return createTableSynonym(db);
} else if (data.synonymForSchema.findFunction(data.synonymFor) != null) { } else if (data.synonymForSchema.findFunction(data.synonymFor) != null) {
// TODO Implement function synonym return createFunctionSynonym(db);
} else if (data.synonymForSchema.findSequence(data.synonymFor) != null) { } else if (data.synonymForSchema.findSequence(data.synonymFor) != null) {
// TODO Implement sequence synonym // TODO Implement sequence synonym
} }
...@@ -71,6 +70,34 @@ public class CreateSynonym extends SchemaCommand { ...@@ -71,6 +70,34 @@ public class CreateSynonym extends SchemaCommand {
} }
private int createFunctionSynonym(Database db) {
FunctionAlias old = getSchema().findFunction(data.synonymName);
// if (old != null) {
// if (orReplace && old instanceof TableSynonym) {
// // ok, we replacing the existing synonym
// } else if (ifNotExists && old instanceof TableSynonym) {
// return 0;
// } else {
// throw DbException.get(ErrorCode.TABLE_OR_VIEW_ALREADY_EXISTS_1, data.synonymName);
// }
// }
//
// TableSynonym table;
// if (old != null) {
// table = (TableSynonym) old;
// data.schema = table.getSchema();
// table.updateData(data);
// table.setModified();
// } else {
// data.id = getObjectId();
// table = getSchema().createSynonym(data);
// table.setComment(comment);
// db.addSchemaObject(session, table);
// }
return 0;
}
private int createTableSynonym(Database db) { private int createTableSynonym(Database db) {
Table old = getSchema().findTableOrView(session, data.synonymName); Table old = getSchema().findTableOrView(session, data.synonymName);
if (old != null) { if (old != null) {
...@@ -84,7 +111,6 @@ public class CreateSynonym extends SchemaCommand { ...@@ -84,7 +111,6 @@ public class CreateSynonym extends SchemaCommand {
} }
TableSynonym table; TableSynonym table;
if (old != null) { if (old != null) {
table = (TableSynonym) old; table = (TableSynonym) old;
data.schema = table.getSchema(); data.schema = table.getSchema();
...@@ -94,7 +120,6 @@ public class CreateSynonym extends SchemaCommand { ...@@ -94,7 +120,6 @@ public class CreateSynonym extends SchemaCommand {
data.id = getObjectId(); data.id = getObjectId();
table = getSchema().createSynonym(data); table = getSchema().createSynonym(data);
table.setComment(comment); table.setComment(comment);
db.addSchemaObject(session, table); db.addSchemaObject(session, table);
} }
......
package org.h2.engine;
/**
* Created by jiriki on 24.04.16.
*/
public class FunctionSynonym {
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论