public async Task CreateNewFunctionTable() { var exp = SqlExpression.Equal(SqlExpression.Reference(ObjectName.Parse("tab1.a")), SqlExpression.Constant(SqlObject.Integer(2))); var cols = new[] { new FunctionColumnInfo(exp, "exp1", PrimitiveTypes.Integer()) }; var table = new FunctionTable(context, left, cols); Assert.NotNull(table.TableInfo); Assert.Equal(2, table.RowCount); var value = await table.GetValueAsync(0, 0); Assert.NotNull(value); Assert.True(value.IsFalse); }
public async Task GroupMax() { var exp = SqlExpression.Equal(SqlExpression.Reference(ObjectName.Parse("tab1.a")), SqlExpression.Constant(SqlObject.Integer(2))); var cols = new[] { new FunctionColumnInfo(exp, "exp1", PrimitiveTypes.Integer()) }; var table = new FunctionTable(context, left, cols); var result = table.GroupMax(new ObjectName("b")); Assert.NotNull(result); var value1 = await result.GetValueAsync(0, 0); Assert.NotNull(value1); Assert.Equal(SqlObject.Integer(23), value1); }
public override ITable Evaluate(IRequest context) { var childTable = Child.Evaluate(context); var funTable = new FunctionTable(childTable, Functions, Names, context); return funTable.MergeWith(null); }
public override ITable Evaluate(IRequest context) { var childTable = Child.Evaluate(context); var funTable = new FunctionTable(childTable, Functions, Names, context); // If no columns then it is implied the whole table is the group. if (ColumnNames == null || ColumnNames.Length == 0) { funTable = funTable.AsGroup(); } else { funTable = funTable.CreateGroupMatrix(ColumnNames); } return funTable.MergeWith(GroupMaxColumn); }
public TableGroupResolver(FunctionTable table) { Table = table; GroupId = -1; }
public static ITable ResultTable(IRequest context, SqlExpression expression) { var exp = new [] { expression }; var names = new[] { "result" }; var table = new FunctionTable(exp, names, context); return new SubsetColumnTable(table, new[]{0}, new []{new ObjectName("result") }); }
protected override void ExecuteStatement(ExecutionContext context) { var args = Arguments != null ? Arguments.ToArray() : new InvokeArgument[0]; var invoke = new Invoke(ProcedureName, args); var procedure = context.DirectAccess.ResolveProcedure(invoke); if (procedure == null) throw new StatementException(String.Format("Could not retrieve the procedure '{0}': maybe not a procedure.", ProcedureName)); //if (!context.User.CanExecuteProcedure(invoke,context.Request)) // throw new MissingPrivilegesException(context.User.Name, ProcedureName, Privileges.Execute); var result = procedure.Execute(Arguments, context.Request); if (result.HasOutputParameters) { var output = result.OutputParameters; var names = output.Keys.ToArray(); var values = output.Values.Select(SqlExpression.Constant).Cast<SqlExpression>().ToArray(); var resultTable = new FunctionTable(values, names, context.Request); context.SetResult(resultTable); } }