コード例 #1
0
ファイル: test_visit.c プロジェクト: dayu070/GProm
int
main (int argc, char* argv[])
{
    Node *result;

    READ_OPTIONS_AND_INIT("testvisit", "Run visit function on input for testing.");

    // read from terminal
    if (getStringOption("input.sql") == NULL)
    {
        result = parseStream(stdin);

        DEBUG_LOG("Address of returned node is <%p>", result);
        ERROR_LOG("PARSE RESULT FROM STREAM IS <%s>", beatify(nodeToString(result)));
    }
    // parse input string
    else
    {
        result = parseFromString(getStringOption("input.sql"));

        DEBUG_LOG("Address of returned node is <%p>", result);
        ERROR_LOG("PARSE RESULT FROM STRING IS:\n%s", nodeToString(result));
        ERROR_LOG("PARSE RESULT FROM STRING IS:\n%s", beatify(nodeToString(result)));
    }


    void *state = NULL;
    visitTheNode(result, state);

    return shutdownApplication();
}
コード例 #2
0
ファイル: test_serializer.c プロジェクト: dayu070/GProm
int
main (int argc, char* argv[])
{
    Node *result;
    Node *qoModel;
    char *sql;

    READ_OPTIONS_AND_INIT("testtranslate", "Run all stages on input except provenance rewrite and output rewritten SQL code.");

    // read from terminal
    if (getStringOption("input.sql") == NULL)
    {
        result = parseStream(stdin);

        DEBUG_LOG("Address of returned node is <%p>", result);
        ERROR_LOG("PARSE RESULT FROM STREAM IS <%s>", beatify(nodeToString(result)));
    }
    // parse input string
    else
    {
        result = parseFromString(getStringOption("input.sql"));

        DEBUG_LOG("Address of returned node is <%p>", result);
        ERROR_LOG("PARSE RESULT FROM STRING IS:\n%s", beatify(nodeToString(result)));
    }

    qoModel = translateParse(result);
    INFO_LOG("TRANSLATION RESULT FROM STRING IS:\n%s", beatify(nodeToString(qoModel)));
    ERROR_LOG("SIMPLIFIED OPERATOR TREE:\n%s", operatorToOverviewString(qoModel));

    sql = serializeOperatorModel(qoModel);
    ERROR_LOG("SERIALIZED SQL:\n%s", sql);

    return shutdownApplication();
}
コード例 #3
0
ファイル: Communicator.cpp プロジェクト: jnadal/LAIG-Projeto
void Communicator::receiveProlog(char *ans) {
	int bytesRecv = SOCKET_ERROR;
	int pos = 0;
	while (true) {
		recv(m_socket, &ans[pos], 1, 0);
		if (ans[pos] == '\n')
			break;
		pos++;
	}
	int matrix[6][6];
	parseFromString(ans,matrix);
	for(unsigned int i=0;i<6;i++)
	{
		for(unsigned int j=0;j<6;j++)
			cout << matrix[i][j] << " ";
		cout << endl;
	}
	ans[pos] = 0;
	cout << "prolog answered: " << ans << endl;
}
コード例 #4
0
void
SelectionCollection::parseRequestedFromString(const std::string &str)
{
    Impl::RequestsClearer clearRequestsOnExit(&_impl->_requests);

    std::vector<Selection *> selections;
    parseFromString(str, &selections);

    std::vector<Selection *>::const_iterator first = selections.begin();
    std::vector<Selection *>::const_iterator last = first;
    Impl::RequestList::const_iterator i;
    for (i = _impl->_requests.begin(); i != _impl->_requests.end(); ++i)
    {
        const Impl::SelectionRequest &request = *i;
        if (request.count() > 0)
        {
            if (selections.end() - first < request.count())
            {
                GMX_THROW(InvalidInputError("Too few selections provided"));
            }
            last = first + request.count();
        }
        else
        {
            if (i != _impl->_requests.end() - 1)
            {
                GMX_THROW(APIError("Request for all selections not the last option"));
            }
            last = selections.end();
        }
        std::vector<Selection *> curr(first, last);
        request.storage->addSelections(curr, true);
        first = last;
    }
    if (last != selections.end())
    {
        GMX_THROW(InvalidInputError("Too many selections provided"));
    }
}
コード例 #5
0
ファイル: jid.cpp プロジェクト: ZerGabriel/vacuum-im
Jid::Jid(const QString &ANode, const QString &ADomane, const QString &AResource)
{
	d = NULL;
	parseFromString(ANode+CharDog+ADomane+CharSlash+AResource);
	registerJidStreamOperators();
}
コード例 #6
0
ファイル: jid.cpp プロジェクト: ZerGabriel/vacuum-im
Jid::Jid(const QString &AJidStr)
{
	d = NULL;
	parseFromString(AJidStr);
	registerJidStreamOperators();
}
コード例 #7
0
ファイル: jid.cpp プロジェクト: ZerGabriel/vacuum-im
Jid &Jid::operator=(const QString &AJidStr)
{
	return parseFromString(AJidStr);
}
コード例 #8
0
ファイル: jid.cpp プロジェクト: ZerGabriel/vacuum-im
void Jid::setResource(const QString &AResource)
{
	parseFromString(node()+CharDog+domain()+CharSlash+AResource);
}
コード例 #9
0
ファイル: jid.cpp プロジェクト: ZerGabriel/vacuum-im
void Jid::setDomain(const QString &ADomain)
{
	parseFromString(node()+CharDog+ADomain+CharSlash+resource());
}
コード例 #10
0
ファイル: jid.cpp プロジェクト: ZerGabriel/vacuum-im
void Jid::setNode(const QString &ANode)
{
	parseFromString(ANode+CharDog+domain()+CharSlash+resource());
}
コード例 #11
0
ファイル: test_graph_pi_cs.c プロジェクト: dayu070/GProm
rc
testPICSGraph(void)
{
    //RUN_TEST(testTableAccessRewrite(),"test table access rewrite for graphs");
    initMetadataLookupPlugins();
    chooseMetadataLookupPlugin(METADATA_LOOKUP_PLUGIN_ORACLE);
    initMetadataLookupPlugin();
    List *res, *first;
    List *second;

    //Test projection
    //Check if the right result is returned
    char *s = "WITH x AS (SELECT a,b FROM test_graph_pi) SELECT a.a FROM x a, (SELECT a AS c, b AS d FROM x) b  WHERE a.a = b.d AND a.a = 2";
    char *sParse = "WITH x AS (SELECT a,b FROM test_graph_pi) SELECT m.a FROM x m, (SELECT a AS c, b AS d FROM x) n  WHERE m.a = n.d AND m.a = 2;";
    res = executeQuery(s);
    DEBUG_LOG("%s", nodeToString(res));
    DEBUG_LOG("%s", beatify(nodeToString(res)));
    first = (List *)getHeadOfListP(res);
    second = (List *)getNthOfListP(res, 1);
    ASSERT_EQUALS_STRING(getHeadOfListP(first), "2", "First value is correct.");
    ASSERT_EQUALS_STRING(getHeadOfListP(second), "2", "Second value is correct.");

    //Then check the node has been rewritten only once
    Node *result;
    Node *qoModel;
    QueryOperator *rewriteQoModel, *op;

    result = parseFromString(sParse);
    qoModel = translateParse(result);
    op = (QueryOperator *) getHeadOfListP((List *) qoModel);
    rewriteQoModel = rewritePI_CS((ProvenanceComputation *) op);
    DEBUG_LOG("rewrite is %s", operatorToOverviewString((Node *) rewriteQoModel));
    ASSERT_EQUALS_P((Node*)OP_LCHILD(OP_LCHILD(rewriteQoModel)), (Node*)OP_LCHILD(OP_LCHILD(OP_RCHILD(OP_LCHILD(rewriteQoModel)))),"The address of the children is same.");


    //Test aggregation
    s = "WITH x AS (SELECT sum(a) as a, b FROM test_graph_pi group by b) SELECT a.a FROM x a, (SELECT a AS c, b AS d FROM x) b  WHERE a.a = b.c";
    res = executeQuery(s);
    first = (List *)getHeadOfListP(res);

    ASSERT_EQUALS_STRING(getHeadOfListP(first), "3", "First value is correct.");

    /*
    result = parseFromString(getStringOption(s));
    qoModel = translateParse(result);
    op = (QueryOperator *) getHeadOfListP((List *) qoModel);
    rewriteQoModel = rewritePI_CS((ProvenanceComputation *) op);
    ASSERT_EQUALS_P((Node*)OP_LCHILD(OP_LCHILD(rewriteQoModel)), (Node*)OP_RCHILD(OP_LCHILD(rewriteQoModel)),"The address of the children is same.");
	*/

    //Test join
    s = "WITH x AS (SELECT test_graph_pi.a, test_graph_pi2.c FROM test_graph_pi join test_graph_pi2 on test_graph_pi.B = test_graph_pi2.C) SELECT a.a FROM x a, (SELECT a AS c, c AS d FROM x) b WHERE a.a = b.c";
    res = executeQuery(s);
    first = (List *)getHeadOfListP(res);
    second = (List *)getNthOfListP(res, 1);
    ASSERT_EQUALS_STRING(getHeadOfListP(first), "1", "First value is correct.");
    ASSERT_EQUALS_STRING(getHeadOfListP(second), "2", "Second value is correct.");

    /*
    result = parseFromString(getStringOption(s));
    qoModel = translateParse(result);
    op = (QueryOperator *) getHeadOfListP((List *) qoModel);
    rewriteQoModel = rewritePI_CS((ProvenanceComputation *) op);
    ASSERT_EQUALS_P((Node*)OP_LCHILD(OP_LCHILD(rewriteQoModel)), (Node*)OP_RCHILD(OP_LCHILD(rewriteQoModel)),"The address of the children is same.");
	*/
	//Test set
    s = "WITH x AS (SELECT a FROM test_graph_pi UNION ALL SELECT a as c FROM test_graph_pi t) SELECT a.a FROM  x a, (SELECT a AS c FROM x) WHERE c = 1 AND a = 1";
    res = executeQuery(s);
    first = (List *)getHeadOfListP(res);
    second = (List *)getNthOfListP(res, 1);
    ASSERT_EQUALS_STRING(getHeadOfListP(first), "1", "First value is correct.");
    ASSERT_EQUALS_STRING(getHeadOfListP(second), "1", "Second value is correct.");
	/*
    result = parseFromString(getStringOption(s));
    qoModel = translateParse(result);
    op = (QueryOperator *) getHeadOfListP((List *) qoModel);
    rewriteQoModel = rewritePI_CS((ProvenanceComputation *) op);
    ASSERT_EQUALS_P((Node*)OP_LCHILD(OP_LCHILD(rewriteQoModel)), (Node*)OP_RCHILD(OP_LCHILD(rewriteQoModel)),"The address of the children is same.");
	*/
	//Test order
	s = "WITH x AS (SELECT * FROM test_graph_pi ORDER BY a) SELECT a.a FROM x a, (SELECT a AS c FROM x) WHERE c = 2 AND a = 2";
	res = executeQuery(s);
	first = (List *)getHeadOfListP(res);
    ASSERT_EQUALS_STRING(getHeadOfListP(first), "2", "First value is correct.");

    /*
    result = parseFromString(getStringOption(s));
    qoModel = translateParse(result);
    op = (QueryOperator *) getHeadOfListP((List *) qoModel);
    rewriteQoModel = rewritePI_CS((ProvenanceComputation *) op);
    ASSERT_EQUALS_P((Node*)OP_LCHILD(OP_LCHILD(rewriteQoModel)), (Node*)OP_RCHILD(OP_LCHILD(rewriteQoModel)),"The address of the children is same.");
	*/

	//Test duplicate removal
	s = "WITH x AS (SELECT a FROM test_graph_pi UNION SELECT a as c FROM test_graph_pi t) SELECT a.a FROM  x a, (SELECT a AS c FROM x) WHERE c = 1 AND a = 1";
	res = executeQuery(s);
	first = (List *)getHeadOfListP(res);
    ASSERT_EQUALS_STRING(getHeadOfListP(first), "1", "First value is correct.");

    /*
    result = parseFromString(getStringOption(s));
    qoModel = translateParse(result);
    op = (QueryOperator *) getHeadOfListP((List *) qoModel);
    rewriteQoModel = rewritePI_CS((ProvenanceComputation *) op);
    ASSERT_EQUALS_P((Node*)OP_LCHILD(OP_LCHILD(rewriteQoModel)), (Node*)OP_RCHILD(OP_LCHILD(rewriteQoModel)),"The address of the children is same.");

	*/

    return PASS;
}