Example #1
0
 virtual relation_base * operator()(const relation_base & _r) {
     bound_relation const& r = get(_r);
     bound_relation_plugin& p = r.get_plugin();
     bound_relation* result = get(p.mk_full(0, get_result_signature()));
     result->mk_rename(r, m_cycle.size(), m_cycle.c_ptr());
     return result;
 }
 virtual relation_base * operator()(const relation_base & r) {
     expr* rel = get(r).get_relation();
     expr_ref res(m_plugin.get_ast_manager());
     m_args[0] = rel;
     m_plugin.reduce(m_rename_fn, 1, &rel, res); 
     return alloc(external_relation, m_plugin, get_result_signature(), res);
 }
Example #3
0
 virtual relation_base * operator()(const relation_base & _r) {
     bound_relation const& r = get(_r);
     bound_relation_plugin& p = r.get_plugin();
     bound_relation* result = get(p.mk_full(0, get_result_signature()));            
     result->mk_project(r, m_removed_cols.size(), m_removed_cols.c_ptr());
     return result;
 }
 virtual relation_base * operator()(const relation_base & r1, const relation_base & r2) {
     expr_ref res(m_plugin.get_ast_manager());
     m_args[0] = get(r1).get_relation();
     m_args[1] = get(r2).get_relation();
     m_plugin.reduce(m_join_fn, 2, m_args, res); 
     return alloc(external_relation, m_plugin, get_result_signature(), res);
 }
Example #5
0
 virtual relation_base * operator()(const relation_base & _r1, const relation_base & _r2) {
     bound_relation const& r1 = get(_r1);
     bound_relation const& r2 = get(_r2);
     bound_relation_plugin& p = r1.get_plugin();
     bound_relation* result = dynamic_cast<bound_relation*>(p.mk_full(0, get_result_signature()));            
     result->mk_join(r1, r2, m_cols1.size(), m_cols1.c_ptr(), m_cols2.c_ptr());
     return result;
 }
Example #6
0
 join_fn(udoc_plugin& p, udoc_relation const& t1, udoc_relation const& t2, unsigned col_cnt,
         const unsigned * cols1, const unsigned * cols2) 
     : convenient_relation_join_fn(t1.get_signature(), t2.get_signature(), col_cnt, cols1, cols2),
       dm(p.dm(get_result_signature())),
       dm1(t1.get_dm()),
       dm2(t2.get_dm()) {
     t1.expand_column_vector(m_cols1);
     t2.expand_column_vector(m_cols2);
 }
Example #7
0
        virtual relation_base * operator()(const relation_base & r0) {
            SASSERT(r0.get_plugin().is_sieve_relation());
            const sieve_relation & r = static_cast<const sieve_relation &>(r0);
            sieve_relation_plugin & plugin = r.get_plugin();

            relation_base * inner_res = (*m_inner_fun)(r.get_inner());

            return plugin.mk_from_inner(get_result_signature(), m_result_inner_cols.c_ptr(), inner_res);
        }
Example #8
0
        virtual relation_base * operator()(const relation_base & r1, const relation_base & r2) {
            bool r1_sieved = r1.get_plugin().is_sieve_relation();
            bool r2_sieved = r2.get_plugin().is_sieve_relation();
            SASSERT(r1_sieved || r2_sieved);
            const sieve_relation * sr1 = r1_sieved ? static_cast<const sieve_relation *>(&r1) : 0;
            const sieve_relation * sr2 = r2_sieved ? static_cast<const sieve_relation *>(&r2) : 0;
            const relation_base & inner1 = r1_sieved ? sr1->get_inner() : r1;
            const relation_base & inner2 = r2_sieved ? sr2->get_inner() : r2;

            relation_base * inner_res = (*m_inner_join_fun)(inner1, inner2);

            return m_plugin.mk_from_inner(get_result_signature(), m_result_inner_cols.c_ptr(), inner_res);
        }
Example #9
0
        join_fn(udoc_plugin& p, udoc_relation const& t1, udoc_relation const& t2, unsigned col_cnt,
                const unsigned * cols1, const unsigned * cols2) 
            : convenient_relation_join_fn(t1.get_signature(), t2.get_signature(), col_cnt, cols1, cols2),
              dm(p.dm(get_result_signature())),
              dm1(t1.get_dm()),
              dm2(t2.get_dm()) {
            t1.expand_column_vector(m_cols1);
            t2.expand_column_vector(m_cols2);
        }

        virtual relation_base * operator()(const relation_base & _r1, const relation_base & _r2) {
            udoc_relation const& r1 = get(_r1);
            udoc_relation const& r2 = get(_r2);
            TRACE("doc", r1.display(tout << "r1:\n"); r2.display(tout  << "r2:\n"););
            udoc_plugin& p = r1.get_plugin();            
            relation_signature const& sig = get_result_signature();
            udoc_relation * result = alloc(udoc_relation, p, sig);
            udoc const& d1 = r1.get_udoc();
            udoc const& d2 = r2.get_udoc();
            udoc& r = result->get_udoc();
            r.join(d1, d2, dm, dm1, m_cols1, m_cols2);
            TRACE("doc", result->display(tout << "result:\n"););
            IF_VERBOSE(3, result->display(verbose_stream() << "join result:\n"););
            SASSERT(r.well_formed(result->get_dm()));
            return result;
        }
    };
    

    relation_join_fn * udoc_plugin::mk_join_fn(
        const relation_base & t1, const relation_base & t2,
 relation_base * operator()(const relation_base & _r) override {
     interval_relation const& r = get(_r);
     interval_relation_plugin& p = r.get_plugin();
     interval_relation* result = dynamic_cast<interval_relation*>(p.mk_full(nullptr, get_result_signature()));
     result->mk_project(r, m_removed_cols.size(), m_removed_cols.c_ptr());
     return result;
 }
 relation_base * operator()(const relation_base & _r1, const relation_base & _r2) override {
     interval_relation const& r1 = get(_r1);
     interval_relation const& r2 = get(_r2);
     interval_relation_plugin& p = r1.get_plugin();
     interval_relation* result = dynamic_cast<interval_relation*>(p.mk_full(nullptr, get_result_signature()));
     result->mk_join(r1, r2, m_cols1.size(), m_cols1.c_ptr(), m_cols2.c_ptr());
     return result;
 }
Example #12
0
 virtual table_base* operator()(const table_base& _t1, const table_base& _t2) {
     lazy_table const& t1 = get(_t1);
     lazy_table const& t2 = get(_t2);
     lazy_table_ref* tr = alloc(lazy_table_join, m_cols1.size(), m_cols1.c_ptr(), m_cols2.c_ptr(), t1, t2, get_result_signature());
     return alloc(lazy_table, tr);
 }
Example #13
0
 virtual table_base* operator()(table_base const& _t) {
     lazy_table const& t = get(_t);
     return alloc(lazy_table, alloc(lazy_table_rename, m_cycle.size(), m_cycle.c_ptr(), t, get_result_signature()));
 }
Example #14
0
 virtual table_base* operator()(table_base const& _t) {
     lazy_table const& t = get(_t);
     return alloc(lazy_table, alloc(lazy_table_project, m_removed_cols.size(), m_removed_cols.c_ptr(), t, get_result_signature()));
 }
Example #15
0
 transformer_fn(relation_transformer_fn * inner_fun, const relation_signature & result_sig, 
             const bool * result_inner_cols)
         : m_result_inner_cols(result_sig.size(), result_inner_cols), m_inner_fun(inner_fun) {
     get_result_signature() = result_sig;
 }