• Почему бьются данные, получаемые из PostgreSQL?

    TerminusMKB
    @TerminusMKB Автор вопроса
    Сниффер (Wireshark) показал следующее:
    1) При jdbc 9.4-1201-jdbc41 каждый раз отправляется один запрос. И каждый раз из БД приходит полный корректный ответ.
    Выглядит запрос в дампе сниффера так:
    Type: Parse
    Length: 169
    Statement:
    Query: select user0_."id" as id1_0_, user0_."testArray" as testArra2_0_, user0_."testTimestamp" as testTime3_0_ from "public"."users" user0_ where user0_."id" in (2)
    Parameters: 0

    2) При более старших версиях jdbc вначале (при первых попытках) идёт такой же запрос, только с указанием Statement:
    Type: Parse
    Length: 169
    Statement: S_2
    Query: select user0_."id" as id1_0_, user0_."testArray" as testArra2_0_, user0_."testTimestamp" as testTime3_0_ from "public"."users" user0_ where user0_."id" in (2)
    Parameters: 0

    3) В ситуации, когда виден баг, jdbc отправляет уже не вышеприведённый запрос, а следующее (как я понял - несколько команд за раз):
    Type: Bind
    Length: 21
    Portal:
    Statement: S_2
    Parameter formats: 0
    Parameter values: 0
    Result formats: 3
       Format: Binary (1)
       Format: Binary (1)
       Format: Binary (1)
    
    Type: Execute
    Length: 9
    Portal:
    Returns: all rows
    
    Type: Sync
    Length: 4

    И в ответ получает данные, которые глазами в дампе оценить уже сложно - идут не текстом.

    P.S.: Проблема решилась выставлением параметра jdbc драйвера preparedStatementCacheQueries в 0. Отключение кеша привело к тому, что драйвер перестал использовать prepared statements при запросах вообще и каждый раз отправляет запрос полностью, как в версии 9.4-1201-jdbc41. Так себе решение, на самом деле, т.к. надо будет пробовать еще, что получится, если я захочу сам использовать prepared statements.
    Ответ написан
    Комментировать
  • Datetimepicker для angular.js ?

    https://github.com/g00fy-/angular-datepicker
    Демо: https://rawgit.com/g00fy-/angular-datepicker/maste...
    По мне так самый симпотишный.
    Ответ написан
    Комментировать
  • Как в PostgreSQL 9.3.4 возможно появление дублирующихся записей в таблицах с уникальным ограничением?

    TerminusMKB
    @TerminusMKB Автор вопроса
    Беда (наверное) в том, что репликация отсутствует.
    Работа с этой таблицей происходит (на запись) следующим образом.
    Раз в минут 10 в неё происходит запись нескольких тысяч значений. Практически все значения в ней уже на момент записи есть, поэтому уникальное ограничение работает каждый раз практически для каждой вставки. И вставок таких за раз происходит тысячи две.
    Если бы у нас отваливались триггеры (по идее) дубликатов было бы по количеству вставок, т.к., мягко говоря, много. А их, скажем, 2 строчки в неделю :)
    Попробую подождать еще вариантов, а пока сделаю фиктивную нерабочую таблицу с ограничением и буду круглосуточно туда пытаться фигачить дубликаты.
    Ответ написан
  • Как лучше реализовать highload таблицу?

    Если у вас есть требование "в статусе active=1 может быть только один таск с определённым значением поля task" (т.е. нужно отсутствие дубликатов) можно создать составной уникальный частичный индекс по полям task + active с ограничением типа "active = 1". Это позволит:
    1) Не делать проверку на наличие таска перед его добавлением. Вместо этого обрабатывать исключение, возникающее при инсерте дублирующихся значений. Ваш вариант с проверкой таска на существование перед добавлением организует вам хорошие проблемы, если вы вдруг задумаете обрабатывать таски хотя бы в два потока.
    2) Быстрый поиск по id и active

    Регулярный перенос done задач в любом случае хорошая идея - будет облегчаться основная таблица с тасками.
    Ответ написан
    Комментировать