Example #1
0
    bool PipelineCommand::run(const string &db, BSONObj &cmdObj,
                              int options, string &errmsg,
                              BSONObjBuilder &result, bool fromRepl) {

        intrusive_ptr<ExpressionContext> pCtx(
            ExpressionContext::create(&InterruptStatusMongod::status));

        /* try to parse the command; if this fails, then we didn't run */
        intrusive_ptr<Pipeline> pPipeline(
            Pipeline::parseCommand(errmsg, cmdObj, pCtx));
        if (!pPipeline.get())
            return false;

        string ns(parseNs(db, cmdObj));

        if (pPipeline->isExplain())
            return runExplain(result, errmsg, ns, db, pPipeline, pCtx);
        else
            return runExecute(result, errmsg, ns, db, pPipeline, pCtx);
    }
Example #2
0
void EvalSqlGrp(const void *data, qCtx *pContext, qStr *pStream, qArgAry *args)
{
	if (args->Count() > 3) {
		CSqlGrp sg(pContext);

		qCtxTmp pCtx(pContext);

		pCtx.MapObj(&sg, &EvalGrpDetail, "sql-detail");
		pCtx.MapObj(&sg, &EvalGrpHead,   "sql-head");
		pCtx.MapObj(&sg, &EvalGrpFoot,   "sql-foot");
		
		sg.SetArgs(&(*args)[2],args->Count()-2);
		
		qArgAry tmp;
		tmp.Add((*args)[0]);
		tmp.Add((*args)[1]);
		tmp.Add("%sql-detail%");
		tmp.Add("%sql-head%");
		tmp.Add("%sql-foot%");
		pCtx.Eval(pStream, "sql", &tmp);
	}
}