コード例 #1
0
ファイル: rel_psm.c プロジェクト: jaiminpan/Monetdb
static sql_rel *
rel_create_trigger(mvc *sql, char *sname, char *tname, char *triggername, int time, int orientation, int event, char *old_name, char *new_name, char *condition, char *query)
{
	sql_rel *rel = rel_create(sql->sa);
	list *exps = new_exp_list(sql->sa);

	append(exps, exp_atom_str(sql->sa, sname, sql_bind_localtype("str") ));
	append(exps, exp_atom_str(sql->sa, tname, sql_bind_localtype("str") ));
	append(exps, exp_atom_str(sql->sa, triggername, sql_bind_localtype("str") ));
	append(exps, exp_atom_int(sql->sa, time));
	append(exps, exp_atom_int(sql->sa, orientation));
	append(exps, exp_atom_int(sql->sa, event));
	append(exps, exp_atom_str(sql->sa, old_name, sql_bind_localtype("str") ));
	append(exps, exp_atom_str(sql->sa, new_name, sql_bind_localtype("str") ));
	append(exps, exp_atom_str(sql->sa, condition, sql_bind_localtype("str") ));
	append(exps, exp_atom_str(sql->sa, query, sql_bind_localtype("str") ));
	rel->l = NULL;
	rel->r = NULL;
	rel->op = op_ddl;
	rel->flag = DDL_CREATE_TRIGGER;
	rel->exps = exps;
	rel->card = CARD_MULTI;
	rel->nrcols = 0;
	return rel;
}
コード例 #2
0
ファイル: reliable.c プロジェクト: ingridqi/reliable
void
rel_demux (const struct config_common *cc,
	   const struct sockaddr_storage *ss,
	   packet_t *pkt, size_t len)
{
    assert(cc);
    assert(ss);
    assert(pkt);
    assert(len >= 0);

    rel_t *r;
    for (r = rel_list; r != NULL; r = r->next) {
        if (addreq(ss, &r->ss)) {
            rel_recvpkt(r, pkt, len);
            return;
        }
    }
    
    /* Before we create a new rel_t, we need to check
     * that this packet has a seqno == 1, otherwise
     * we're starting a flow part way in, and that's 
     * against the rules. */

    if (ntohl(pkt->seqno) != 1) {
        return;
    }

    /* If we reach here, then we need a new rel_t
     * for this connection, so we add it at the
     * head of the linked list of rel_t objects. */

    rel_t *new_r = rel_create (NULL, ss, cc);
    rel_recvpkt(new_r, pkt, len);
}
コード例 #3
0
ファイル: reliable.c プロジェクト: nyn531/cs144
/* This function only gets called when the process is running as a
 * server and must handle connections from multiple clients.  You have
 * to look up the rel_t structure based on the address in the
 * sockaddr_storage passed in.  If this is a new connection (sequence
 * number 1), you will need to allocate a new conn_t using rel_create
 * ().  (Pass rel_create NULL for the conn_t, so it will know to
 * allocate a new connection.)
 */
void
rel_demux (const struct config_common *cc,
	   const struct sockaddr_storage *ss,
	   packet_t *pkt, size_t len)
{
  if (!check_valid(pkt, len)) return;

  rel_t * r = rel_list;
  
  while (r) {
    if (r->ss && addreq(ss, r->ss)) {
      break;
    }
    r = r->next; 
  }

  if (!r) {
    if (ntohl(pkt->seqno) == 1) {
      r = rel_create(NULL, ss, cc);
    } else {
      return;
    }
  }

  rel_recvpkt(r, pkt, len);
}
コード例 #4
0
ファイル: rel_psm.c プロジェクト: jaiminpan/Monetdb
static sql_rel *
rel_psm_block(sql_allocator *sa, list *l)
{
	if (l) {
		sql_rel *r = rel_create(sa);

		r->op = op_ddl;
		r->flag = DDL_PSM;
		r->exps = l;
		return r;
	}
	return NULL;
}
コード例 #5
0
ファイル: rel_psm.c プロジェクト: jaiminpan/Monetdb
static sql_rel*
rel_create_function(sql_allocator *sa, char *sname, sql_func *f)
{
	sql_rel *rel = rel_create(sa);
	list *exps = new_exp_list(sa);

	append(exps, exp_atom_clob(sa, sname));
	append(exps, exp_atom_ptr(sa, f));
	rel->l = NULL;
	rel->r = NULL;
	rel->op = op_ddl;
	rel->flag = DDL_CREATE_FUNCTION;
	rel->exps = exps;
	rel->card = 0;
	rel->nrcols = 0;
	return rel;
}
コード例 #6
0
ファイル: rel_psm.c プロジェクト: jaiminpan/Monetdb
static sql_rel *
rel_drop_trigger(mvc *sql, char *sname, char *tname)
{
	sql_rel *rel = rel_create(sql->sa);
	list *exps = new_exp_list(sql->sa);

	append(exps, exp_atom_str(sql->sa, sname, sql_bind_localtype("str") ));
	append(exps, exp_atom_str(sql->sa, tname, sql_bind_localtype("str") ));
	rel->l = NULL;
	rel->r = NULL;
	rel->op = op_ddl;
	rel->flag = DDL_DROP_TRIGGER;
	rel->exps = exps;
	rel->card = CARD_MULTI;
	rel->nrcols = 0;
	return rel;
}
コード例 #7
0
ファイル: rel_trans.c プロジェクト: Clay-Birkett/monetdb
static sql_rel *
rel_trans(mvc *sql, int trans_type, int nr, char *name)
{
	sql_rel *rel = rel_create(sql->sa);
	list *exps = new_exp_list(sql->sa);

	append(exps, exp_atom_int(sql->sa, nr));
	if (name)
		append(exps, exp_atom_clob(sql->sa, name));
	rel->l = NULL;
	rel->r = NULL;
	rel->op = op_ddl;
	rel->flag = trans_type;
	rel->exps = exps;
	rel->card = 0;
	rel->nrcols = 0;
	return rel;
}
コード例 #8
0
ファイル: rel_psm.c プロジェクト: jaiminpan/Monetdb
static sql_rel*
rel_drop_function(sql_allocator *sa, char *sname, char *name, int nr, int type, int action)
{
	sql_rel *rel = rel_create(sa);
	list *exps = new_exp_list(sa);

	append(exps, exp_atom_clob(sa, sname));
	append(exps, exp_atom_clob(sa, name));
	append(exps, exp_atom_int(sa, nr));
	append(exps, exp_atom_int(sa, type));
	append(exps, exp_atom_int(sa, action));
	rel->l = NULL;
	rel->r = NULL;
	rel->op = op_ddl;
	rel->flag = DDL_DROP_FUNCTION;
	rel->exps = exps;
	rel->card = 0;
	rel->nrcols = 0;
	return rel;
}