GithubHelp home page GithubHelp logo

Comments (4)

killwort avatar killwort commented on June 20, 2024

I barely can understand you, sorry. If you want you could write in Russian.

This driver is fully synchronous - it always waits for data from server before returning. As for ExecuteReader - it waits for execution result and first result set (Block in CH's terminology).

from clickhouse-net.

PavelNewsky avatar PavelNewsky commented on June 20, 2024

Простите за мой плохой английский)
Проблема как раз в том, что мое приложение на c#, которые использует эту библиотеку, не ждёт завершения запроса, если он достаточно большой(уточняю это, потом что на небольших запросах все работает, естественно)

Чтобы было проще понять... Я использую ExecuteReader команды, в которой находится INSERT table1 SELECT * FROM table2 - это примерная маска команды, select'ы на самом деле сложнее. Так вот, эта команда выполняется примерно 30 секунд, но так как ExecuteReader не ждёт завершения этой команды, как я утверждаю (а также видно в отладке), на следующей команде(цепляет результат предыдущей) вылетает ошибка.

from clickhouse-net.

killwort avatar killwort commented on June 20, 2024

Соединения нельзя использовать в разных потоках (в том числе в TPL тасках), это, естественно, приводит к ошибкам.
В принципе, накладные расходы на открытие нового соединиения не велики, так что для каждого запроса можно открывать новое соединение (или использовать connection pool/object pool).

Не очень понятно как и в каком контексте вы ждёте исполнения ExecuteReader, лучше было бы прислать кусок кода, чтобы было понятнее.
И, кстати, всегда и обязательно надо считывать все result-set'ы возвращённые запросом при помощи do{...}while(reader.NextResult()), иначе непрочтённые блоки будут читаться в ответ на следующий запрос, что, опять же, приведёт к ошибке.

from clickhouse-net.

PavelNewsky avatar PavelNewsky commented on June 20, 2024

Спасибо, ваши комментарии отчасти помогли, я действительно подключался к базе с одного потока, а выполнял запросы в другом. Исправил, пришлось ещё поколдовать с таймаутами, потому что запрос все равно не успевал выполниться за какой-то дефолтный таймаут.

from clickhouse-net.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.