Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QSqlQueryModel with Open Cypher query



  • Друзья, имеется следующая проблема при переходе с Qt 5.5.1 на Qt 5.12.1

    1. Есть model-view представление. View реализовано как стандартный ListView в QML.
    2. Модель реализована на C++ как класс, наследуемый от QSqlQueryModel, все как по "учебнику", с разницей в том, что запрос у меня шел не к PostgreSQL а к AgensGraph (это форк PSQL с реализацией графовой базы данных)
    3. Запрос так же делается не SQL а OpenCypher.
    4. Все прекрасно работало в Qt 5.5.1 но отказывается работать в Qt 5.12.1

    Запрос типа такого:
    const char* ProjectBaseModel::SQL_SELECT =
    "SET graph_path = prod; "
    " match (n:task) return properties(n) AS n, n.task_type as t ;";

    С базой программа связывается, но запрос не выполняется.
    Хотя, и с консоли и через Pgadmin результат запроса выглядит так:
    n | t
    ----------------------------+-------------
    {"task_type": "Modeling"} | "Modeling"
    {"task_type": "Texturing"} | "Texturing"
    {"task_type": "Rig"} | "Rig"
    {"task_type": "Shading"} | "Shading"

    Что характерно, SQL запрос к таблицам этой же базы делает успешно - в ListView появляется список.

    Кто нибудь сталкивался с подобной проблемой?

    Александр



  • Проблема решена. Все прекрасно работает если пользоваться отдельными query.exec вызовами для каждой команды OpenCypher

    query = QSqlQuery(db);
    query.exec("SET graph_path = some_graph; ");
    query.exec("MATCH some OpenCypher match RETURN some Match variable;");
    

Log in to reply