01: /*
02: * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
03: * (http://h2database.com/html/license.html).
04: * Initial Developer: H2 Group
05: */
06: package org.h2.expression;
07:
08: import java.sql.SQLException;
09:
10: import org.h2.engine.Session;
11: import org.h2.value.Value;
12: import org.h2.value.ValueResultSet;
13:
14: /**
15: * This interface is used by the built-in functions,
16: * as well as the user defined functions.
17: */
18: public interface FunctionCall {
19:
20: /**
21: * Get the name of the function.
22: *
23: * @return the name
24: */
25: String getName();
26:
27: /**
28: * Get the number of parameters.
29: *
30: * @return the number of parameters
31: */
32: int getParameterCount() throws SQLException;
33:
34: /**
35: * Get an empty result set with the column names set.
36: *
37: * @param session the session
38: * @param nullArgs the argument list (some arguments may be null)
39: * @return the empty result set
40: */
41: ValueResultSet getValueForColumnList(Session session,
42: Expression[] nullArgs) throws SQLException;
43:
44: /**
45: * Get the data type.
46: *
47: * @return the data type
48: */
49: int getType();
50:
51: /**
52: * Optimize the function if possible.
53: *
54: * @param session the session
55: * @return the optimized expression
56: */
57: Expression optimize(Session session) throws SQLException;
58:
59: /**
60: * Calculate the result.
61: *
62: * @param session the session
63: * @return the result
64: */
65: Value getValue(Session session) throws SQLException;
66:
67: /**
68: * Get the function arguments.
69: *
70: * @return argument list
71: */
72: Expression[] getArgs();
73:
74: /**
75: * Get the SQL snippet of the function (including arguments).
76: *
77: * @return the SQL snippet.
78: */
79: String getSQL();
80:
81: }
|