1 | /* |
2 | * Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0, |
3 | * and the EPL 1.0 (http://h2database.com/html/license.html). |
4 | * Initial Developer: H2 Group |
5 | */ |
6 | package org.h2.schema; |
7 | |
8 | import org.h2.engine.DbObject; |
9 | import org.h2.engine.Session; |
10 | import org.h2.expression.ValueExpression; |
11 | import org.h2.message.DbException; |
12 | import org.h2.message.Trace; |
13 | import org.h2.table.Table; |
14 | import org.h2.value.Value; |
15 | |
16 | /** |
17 | * A user-defined constant as created by the SQL statement |
18 | * CREATE CONSTANT |
19 | */ |
20 | public class Constant extends SchemaObjectBase { |
21 | |
22 | private Value value; |
23 | private ValueExpression expression; |
24 | |
25 | public Constant(Schema schema, int id, String name) { |
26 | initSchemaObjectBase(schema, id, name, Trace.SCHEMA); |
27 | } |
28 | |
29 | @Override |
30 | public String getCreateSQLForCopy(Table table, String quotedName) { |
31 | throw DbException.throwInternalError(); |
32 | } |
33 | |
34 | @Override |
35 | public String getDropSQL() { |
36 | return null; |
37 | } |
38 | |
39 | @Override |
40 | public String getCreateSQL() { |
41 | return "CREATE CONSTANT " + getSQL() + " VALUE " + value.getSQL(); |
42 | } |
43 | |
44 | @Override |
45 | public int getType() { |
46 | return DbObject.CONSTANT; |
47 | } |
48 | |
49 | @Override |
50 | public void removeChildrenAndResources(Session session) { |
51 | database.removeMeta(session, getId()); |
52 | invalidate(); |
53 | } |
54 | |
55 | @Override |
56 | public void checkRename() { |
57 | // ok |
58 | } |
59 | |
60 | public void setValue(Value value) { |
61 | this.value = value; |
62 | expression = ValueExpression.get(value); |
63 | } |
64 | |
65 | public ValueExpression getValue() { |
66 | return expression; |
67 | } |
68 | |
69 | } |