public override int GetHashCode() { if (IsVoidType) { return(-1); } if (IsFunctionType) { //Recommended approach in effective java book and java and android docs int result = 17; result = result * 31 + FunctionReturnType.GetHashCode(); FunctionParameters.ForEach(p => result = result * 31 + p.GetHashCode()); return(result); } if (IsBasicType) { int result = 17; result = result * 31 + RawTypeName.GetHashCode(); result = result * 31 + PtrIndirectionLevel.GetHashCode(); ArrayDimensions.ForEach(p => result = result * 31 + p.GetHashCode()); return(result); } throw new Exception("Type is not void, basic or a function type"); }
public override SqlString Render(IList args, ISessionFactoryImplementor factory) { return(new SqlStringBuilder() .Add("cast('") .Add(Name) .Add("' as ") .Add(FunctionReturnType.SqlTypes(factory)[0].ToString()) .Add(")") .ToSqlString()); }
private bool FunctionTypesCompatable(CType type) { bool equ = true; equ = equ && FunctionReturnType.CompatableWith(type); equ = equ && FunctionArgumentTypes.Count == type.FunctionArgumentTypes.Count; for (int i = 0; i < FunctionArgumentTypes.Count; i++) { if (!equ) { break; } equ = FunctionArgumentTypes[i].CompatableWith(type.FunctionArgumentTypes[i]); } return(equ); }
public override SqlString Render(IList args, ISessionFactoryImplementor factory) { return(new SqlString("cast('", Name, "' as ", FunctionReturnType.SqlTypes(factory)[0].ToString(), ")")); }
public override void ExplicitVisit(FunctionReturnType fragment) { _fragments.Add(fragment); }
public static List <Field> GetFields(this FunctionReturnType returnType, ILogger logger, SchemaFile file) { var columns = new List <Field>(); if (returnType is ScalarFunctionReturnType scalarFunctionReturnType) { // TODO : name? var column = scalarFunctionReturnType.DataType.GetField(null, false, logger, file); columns.Add(column); } if (returnType is TableValuedFunctionReturnType tableValuedFunctionReturnType) { var tableValuedFunctionColumns = tableValuedFunctionReturnType .DeclareTableVariableBody .Definition .ColumnDefinitions .GetFields(logger, file) .ToList(); columns.AddRange(tableValuedFunctionColumns); var tableReference = new Table() { Columns = tableValuedFunctionColumns, File = file, Database = SchemaObject.TempDb, Schema = SchemaObject.DefaultSchema, Identifier = tableValuedFunctionReturnType.DeclareTableVariableBody.VariableName.Value, }; var field = new TableReferenceField() { Name = tableValuedFunctionReturnType.DeclareTableVariableBody.VariableName.Value, Type = FieldType.Table, IsNullable = false, Reference = tableReference, }; file.FileContext.Variables.Peek().Add(field); } if (returnType is SelectFunctionReturnType selectFunctionReturnType) { var tableValuedFunctionColumns = selectFunctionReturnType .SelectStatement .GetFields(logger, file); columns.AddRange(tableValuedFunctionColumns); } if (!columns.Any()) { logger.Log(LogLevel.Warning, LogType.NotSupportedYet, file.Path, $"Unable to determine return values for a function. \"{returnType.GetType()}\" is not supported yet."); } return(columns); }
public sealed override void ExplicitVisit(FunctionReturnType node) { base.ExplicitVisit(node); }
public sealed override void Visit(FunctionReturnType node) { base.Visit(node); }
public override void ExplicitVisit(FunctionReturnType node) { this.action(node); }