Example #1
0
static int
exec_command(memcached_st *mcd, int n_cmds, char * const cmds[])
{
	int	retval = 1;

	if (strcmp(cmds[0], "get") == 0 && n_cmds == 2)
		retval = exec_get(mcd, cmds[1]);
	else if (strcmp(cmds[0], "add") == 0 && (n_cmds >= 3 && n_cmds <= 5))
		retval = exec_add(mcd, cmds[1], cmds[2],
						  n_cmds > 3 ? atol(cmds[3]) : 0,
						  n_cmds > 4 ? atol(cmds[4]) : 0);
	else if (strcmp(cmds[0], "set") == 0 && (n_cmds >= 3 && n_cmds <= 5))
		retval = exec_set(mcd, cmds[1], cmds[2],
						  n_cmds > 3 ? atol(cmds[3]) : 0,
						  n_cmds > 4 ? atol(cmds[4]) : 0);
	else if (strcmp(cmds[0], "replace") == 0 && (n_cmds >= 3 && n_cmds <= 5))
		retval = exec_replace(mcd, cmds[1], cmds[2],
							  n_cmds > 3 ? atol(cmds[3]) : 0,
							  n_cmds > 4 ? atol(cmds[4]) : 0);
	else if (strcmp(cmds[0], "append") == 0 && (n_cmds >= 3 && n_cmds <= 5))
		retval = exec_append(mcd, cmds[1], cmds[2],
							 n_cmds > 3 ? atol(cmds[3]) : 0,
							 n_cmds > 4 ? atol(cmds[4]) : 0);
	else if (strcmp(cmds[0], "prepend") == 0 && (n_cmds >= 3 && n_cmds <= 5))
		retval = exec_prepend(mcd, cmds[1], cmds[2],
							 n_cmds > 3 ? atol(cmds[3]) : 0,
							 n_cmds > 4 ? atol(cmds[4]) : 0);
	else if (strcmp(cmds[0], "cas") == 0 && (n_cmds >= 4 && n_cmds <= 6))
		retval = exec_cas(mcd, cmds[1], cmds[2], atol(cmds[3]),
						  n_cmds > 4 ? atol(cmds[4]) : 0,
						  n_cmds > 5 ? atol(cmds[5]) : 0);
	else if (strcmp(cmds[0], "delete") == 0 && (n_cmds >= 2 && n_cmds <= 3))
		retval = exec_delete(mcd, cmds[1],
							 n_cmds > 2 ? atol(cmds[2]) : 0);
	else if (strcmp(cmds[0], "incr") == 0 && n_cmds == 2)
		retval = exec_incr(mcd, cmds[1]);
	else if (strcmp(cmds[0], "decr") == 0 && n_cmds == 2)
		retval = exec_decr(mcd, cmds[1]);
	else if (strcmp(cmds[0], "flush") == 0 && (n_cmds >= 1 && n_cmds <=2))
		retval = exec_flush(mcd, n_cmds > 1 ? atol(cmds[1]) : 0);
	else if (strcmp(cmds[0], "simple_bench") == 0 &&
			 (n_cmds >= 1 && n_cmds <=2))
		retval = exec_simple_bench(mcd, n_cmds > 1 ? atof(cmds[1]) : 100.0);

	return retval;
}
Example #2
0
/**
 * Execute a parse tree and return the result set or runtime error
 *
 * @param dcb	The DCB that connects to the client
 * @param tree	The parse tree for the query
 */
void
maxinfo_execute(DCB *dcb, MAXINFO_TREE *tree)
{
	switch (tree->op)
	{
	case MAXOP_SHOW:
		exec_show(dcb, tree);
		break;
	case MAXOP_SELECT:
		exec_select(dcb, tree);
		break;

        case MAXOP_FLUSH:
            exec_flush(dcb, tree);
            break;
        case MAXOP_SET:
            exec_set(dcb, tree);
            break;
        case MAXOP_CLEAR:
            exec_clear(dcb, tree);
            break;
        case MAXOP_SHUTDOWN:
            exec_shutdown(dcb, tree);
            break;
        case MAXOP_RESTART:
            exec_restart(dcb, tree);
            break;

	case MAXOP_TABLE:
	case MAXOP_COLUMNS:
	case MAXOP_LITERAL:
	case MAXOP_PREDICATE:
	case MAXOP_LIKE:
	case MAXOP_EQUAL:
	default:
		maxinfo_send_error(dcb, 0, "Unexpected operator in parse tree");
	}
}