public static void MaterializeView(Parse parse, Table view, Expr where_, int curId)
{
Context ctx = parse.Ctx;
int db = Prepare.SchemaToIndex(ctx, view.Schema);
where_ = Expr.Dup(ctx, where_, 0);
SrcList from = Parse.SrcListAppend(ctx, null, null, null);
if (from != null)
{
Debug.Assert(from.Srcs == 1);
from.Ids[0].Name = view.Name;
from.Ids[0].Database = ctx.DBs[db].Name;
Debug.Assert(from.Ids[0].On == null);
Debug.Assert(from.Ids[0].Using == null);
}
Select select = Select.New(parse, 0, from, where_, 0, 0, 0, 0, 0, 0);
if (select != null) select.SelFlags |= SF.Materialize;
SelectDest dest = new SelectDest();
Select.DestInit(dest, SRT.EphemTab, curId);
Select.Select(parse, select, dest);
Select.Delete(ctx, select);
}