DeveelDB  20151217
complete SQL database system, primarly developed for .NET/Mono frameworks
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Deveel.Data.Sql.Expressions.ReturnTypeVisitor Class Reference
Inheritance diagram for Deveel.Data.Sql.Expressions.ReturnTypeVisitor:
Deveel.Data.Sql.Expressions.SqlExpressionVisitor

Public Member Functions

 ReturnTypeVisitor (IRequest query, IVariableResolver variableResolver)
 
override SqlExpression VisitBinary (SqlBinaryExpression binaryEpression)
 
override SqlExpression VisitConstant (SqlConstantExpression constant)
 
override SqlExpression VisitFunctionCall (SqlFunctionCallExpression expression)
 Visits the expression that calls the function defined. More...
 
override SqlExpression VisitReference (SqlReferenceExpression reference)
 
override SqlExpression Visit (SqlExpression expression)
 Visits a given SQL expression. More...
 
SqlType GetType (SqlExpression expression)
 
- Public Member Functions inherited from Deveel.Data.Sql.Expressions.SqlExpressionVisitor
virtual SqlExpression[] VisitExpressionList (SqlExpression[] list)
 Visits a list of expressions given. More...
 
virtual SqlExpression VisitUnary (SqlUnaryExpression unary)
 
virtual SqlExpression VisitCast (SqlCastExpression castExpression)
 
virtual SqlExpression VisitVariableReference (SqlVariableReferenceExpression reference)
 
virtual SqlExpression VisitAssign (SqlAssignExpression assign)
 
virtual SqlExpression VisitConditional (SqlConditionalExpression conditional)
 
virtual SqlExpression VisitTuple (SqlTupleExpression expression)
 
virtual SqlExpression VisitQuery (SqlQueryExpression query)
 

Private Member Functions

SqlExpression VisitQueryReference (QueryReferenceExpression expression)
 

Private Attributes

readonly IRequest query
 
readonly IVariableResolver variableResolver
 
SqlType sqlType
 

Detailed Description

Definition at line 24 of file ReturnTypeVisitor.cs.

Constructor & Destructor Documentation

Deveel.Data.Sql.Expressions.ReturnTypeVisitor.ReturnTypeVisitor ( IRequest  query,
IVariableResolver  variableResolver 
)
inline

Definition at line 30 of file ReturnTypeVisitor.cs.

30  {
31  this.query = query;
33 
35  }
Provides some helper functions for resolving and creating SqlType instances that are primitive to the...

Member Function Documentation

SqlType Deveel.Data.Sql.Expressions.ReturnTypeVisitor.GetType ( SqlExpression  expression)
inline

Definition at line 90 of file ReturnTypeVisitor.cs.

90  {
91  Visit(expression);
92  return sqlType;
93  }
override SqlExpression Visit(SqlExpression expression)
Visits a given SQL expression.
override SqlExpression Deveel.Data.Sql.Expressions.ReturnTypeVisitor.Visit ( SqlExpression  expression)
inlinevirtual

Visits a given SQL expression.

Parameters
expressionThe SqlExpression to visit.
Returns
Returns an instance of SqlExpression as result of the visit.

Reimplemented from Deveel.Data.Sql.Expressions.SqlExpressionVisitor.

Definition at line 78 of file ReturnTypeVisitor.cs.

78  {
79  if (expression is QueryReferenceExpression)
80  return VisitQueryReference((QueryReferenceExpression) expression);
81 
82  return base.Visit(expression);
83  }
SqlExpression VisitQueryReference(QueryReferenceExpression expression)
override SqlExpression Deveel.Data.Sql.Expressions.ReturnTypeVisitor.VisitBinary ( SqlBinaryExpression  binaryEpression)
inlinevirtual

Parameters
binaryEpression
Returns

Reimplemented from Deveel.Data.Sql.Expressions.SqlExpressionVisitor.

Definition at line 37 of file ReturnTypeVisitor.cs.

37  {
38  switch (binaryEpression.ExpressionType) {
39  case SqlExpressionType.Add:
40  case SqlExpressionType.Subtract:
41  case SqlExpressionType.Multiply:
42  case SqlExpressionType.Modulo:
43  case SqlExpressionType.Divide:
45  break;
46  default:
47  // we assume the expression type is already been check to be binary.
49  break;
50 
51  }
52 
53  return base.VisitBinary(binaryEpression);
54  }
Provides some helper functions for resolving and creating SqlType instances that are primitive to the...
static BooleanType Boolean()
SqlExpressionType
All the possible type of SqlExpression supported
static NumericType Numeric()
override SqlExpression Deveel.Data.Sql.Expressions.ReturnTypeVisitor.VisitConstant ( SqlConstantExpression  constant)
inlinevirtual

Parameters
constant
Returns

Reimplemented from Deveel.Data.Sql.Expressions.SqlExpressionVisitor.

Definition at line 56 of file ReturnTypeVisitor.cs.

56  {
57  sqlType = constant.Value.Type;
58 
59  return base.VisitConstant(constant);
60  }
override SqlExpression Deveel.Data.Sql.Expressions.ReturnTypeVisitor.VisitFunctionCall ( SqlFunctionCallExpression  expression)
inlinevirtual

Visits the expression that calls the function defined.

Parameters
expressionThe SqlFunctionCallExpression to visit.
Returns

Reimplemented from Deveel.Data.Sql.Expressions.SqlExpressionVisitor.

Definition at line 62 of file ReturnTypeVisitor.cs.

62  {
63  var invoke = new Invoke(expression.FunctioName, expression.Arguments);
64  var function = invoke.ResolveRoutine(query) as IFunction;
65  if (function != null)
66  sqlType = function.ReturnType(invoke, query, variableResolver);
67 
68  return base.VisitFunctionCall(expression);
69  }
Defines a routine that is a function, that means it returns a value after its execution.
Definition: IFunction.cs:26
The information about the invocation of a routine, including the full name and arguments (as SqlExpre...
Definition: Invoke.cs:30
SqlExpression Deveel.Data.Sql.Expressions.ReturnTypeVisitor.VisitQueryReference ( QueryReferenceExpression  expression)
inlineprivate

Definition at line 85 of file ReturnTypeVisitor.cs.

85  {
86  sqlType = expression.QueryReference.ReturnType;
87  return expression;
88  }
override SqlExpression Deveel.Data.Sql.Expressions.ReturnTypeVisitor.VisitReference ( SqlReferenceExpression  reference)
inlinevirtual

Parameters
reference
Returns

Reimplemented from Deveel.Data.Sql.Expressions.SqlExpressionVisitor.

Definition at line 71 of file ReturnTypeVisitor.cs.

71  {
72  var name = reference.ReferenceName;
74 
75  return base.VisitReference(reference);
76  }
SqlType ReturnType(ObjectName variable)
Returns the SqlType of object the given variable is.

Member Data Documentation

readonly IRequest Deveel.Data.Sql.Expressions.ReturnTypeVisitor.query
private

Definition at line 25 of file ReturnTypeVisitor.cs.

SqlType Deveel.Data.Sql.Expressions.ReturnTypeVisitor.sqlType
private

Definition at line 28 of file ReturnTypeVisitor.cs.

readonly IVariableResolver Deveel.Data.Sql.Expressions.ReturnTypeVisitor.variableResolver
private

Definition at line 26 of file ReturnTypeVisitor.cs.


The documentation for this class was generated from the following file: