Beispiel #1
0
 void testCollectParams()
 {
     Expression expr = Expression(_T("ID")) == 1 &&
         Expression(_T("A")) != String(_T("a"));
     SqlGeneratorOptions options1(NO_QUOTES, true, true);
     SqlGeneratorContext ctx1;
     String sql = expr.generate_sql(options1, &ctx1);
     CPPUNIT_ASSERT_EQUAL(string("(ID = ?) AND (A <> ?)"),
             NARROW(sql));
     SqlGeneratorOptions options2(NO_QUOTES, true, true, true);
     SqlGeneratorContext ctx2;
     sql = expr.generate_sql(options2, &ctx2);
     CPPUNIT_ASSERT_EQUAL(string("(ID = :1) AND (A <> :2)"),
             NARROW(sql));
     CPPUNIT_ASSERT_EQUAL(string("(ID = 1) AND (A <> 'a')"),
             NARROW(expr.get_sql()));
     CPPUNIT_ASSERT_EQUAL((size_t)2, ctx1.params_.size());
     CPPUNIT_ASSERT_EQUAL(1, ctx1.params_[0].as_integer());
     CPPUNIT_ASSERT_EQUAL(string("a"), NARROW(ctx1.params_[1].as_string()));
     CPPUNIT_ASSERT_EQUAL((size_t)2, ctx2.params_.size());
     CPPUNIT_ASSERT_EQUAL(1, ctx2.params_[0].as_integer());
     CPPUNIT_ASSERT_EQUAL(string("a"), NARROW(ctx2.params_[1].as_string()));
 }
Beispiel #2
0
SqlResultSet
EngineBase::select_iter(const Expression &select_expr)
{
    SqlGeneratorOptions options(NO_QUOTES,
            get_dialect()->has_for_update(),
            true,
            get_conn()->get_driver()->numbered_params(),
            (Yb::SqlPagerModel)get_dialect()->pager_model());
    SqlGeneratorContext ctx;
    String sql = select_expr.generate_sql(options, &ctx);
    auto_ptr<SqlCursor> cursor = get_conn()->new_cursor();
    cursor->prepare(sql);
    SqlResultSet rs = cursor->exec(ctx.params_);
    rs.own(cursor);
    return rs;
}