Найдено 11 результатов

ZEuS
Пн 06 окт 2014 08:14
Форум: PostgreSQL Data Access Components
Тема: Ошибка при использовании PgDump
Ответы: 10
Просмотры: 22419

Re: Ошибка при использовании PgDump

Мы исследовали проблему.
1. Изменение в модуле PgServices.pas, которое Вы привели, не является решением проблемы с созданием бэкапа. Более того, оно делает файл бэкапа неприменимым для восстановления. Если установить параметр Quote метода TPgTextConverter.ValueToText в значение False для BYTEA-полей, то в файле бэкапа содержимое таких полей не заключается в кавычки, т.е. было:

Код: Выделить всё

INSERT INTO test(id, bytea_field) VALUES ('1', '\\001\\014\\000\\004\\010...');
После изменений стало:

Код: Выделить всё

INSERT INTO test(id, bytea_field) VALUES ('1', \\001\\014\\000\\004\\010...);
Очевидно, что полученное INSERT-выражение не является валидным.

2. Проблема с "Out of memory" при бэкапе\восстановлении BYTEA-полей связана с форматом их представления в INSERT-выражении:
- если используется PostgreSQL версии ниже 9.0, то для представления содержимого BYTEA-поля используется bytea escape-формат ( http://www.postgresql.org/docs/9.0/stat ... inary.html )
- очевидно, что в таком случае длина результирующей строки в INSERT-выражении может получиться в 5 раз больше размера данных BYTEA-поля. Оперирование строками очень больших размеров и вызывает "Out of memory", что связано с ограничениями ресурсов операционной системы.

До сих пор мы не получали жалоб от пользователей по поводу данной проблемы. Если Вам необходимо выполнять бэкап\восстановление BYTEA-полей очень больших размеров, Вы можете проголосовать за эту функциональность на нашей UserVoice странице: http://devart.uservoice.com/forums/1046 ... postgresql . Предложения с большим количеством голосов будут реализованы быстрее.
ZEuS
Пн 31 мар 2014 06:59
Форум: Universal Data Access Components
Тема: не срабатывает событие OnCommit
Ответы: 4
Просмотры: 5172

Re: не срабатывает событие OnCommit

Мы добавили для TUniTransaction события OnCommitRetaining и OnRollbackRetaining. Данные изменения войдут в следующую версию UniDAC.
ZEuS
Вт 25 мар 2014 11:39
Форум: Universal Data Access Components
Тема: не срабатывает событие OnCommit
Ответы: 4
Просмотры: 5172

Re: не срабатывает событие OnCommit

Данное поведение обусловлено особенностями работы UniDAC c FireBird. FireBird требует активной транзакции для любой операции с данными, даже для выполнения SELECT. Поэтому Unitransaction1 автоматически стартует при открытии UniQuery1. При использовании этой же транзакции в качестве UniQuery1.UpdateTransaction, после выполнения UniQuery1.Post для транзакции вызывается не метод Commit, а метод CommitRetaining, потому что выполнение Commit привело бы к завершению транзакции и закрытию UniQuery1.
Метод TUniTransaction.CommitRetaining не вызывает срабатывание события TUniTransaction.OnCommit. Исследовав ситуацию, мы приняли решение добавить для TUniTransaction события OnCommitRetaining и OnRollbackRetaining. Данное дополнение войдет в следующую версию UniDAC.
Также, мы добавим описание всех событий TUniTransaction в справку.
ZEuS
Вт 25 мар 2014 10:55
Форум: Universal Data Access Components
Тема: UniMetaData.Filter подозрение на баг
Ответы: 1
Просмотры: 2861

Re: UniMetaData.Filter подозрение на баг

Спасибо за информацию. Мы воспроизвели и исправили проблему, это исправление войдет в следующий билд. В данный момент для решения проблемы Вы можете изменить код Вашего примера следующим образом:

Код: Выделить всё

procedure TForm1.Button2Click(Sender: TObject);
begin
  Unimetadata1.Close;
  Unimetadata1.MetaDataKind := 'Constraints';
  Unimetadata1.Filter := 'TABLE_NAME="TEST" AND CONSTRAINT_TYPE="PRIMARY_KEY"';
  Unimetadata1.Filtered := True;
  Unimetadata1.Open;
  //---
  Unimetadata1.Filtered := False;
  Unimetadata1.Close;
  Unimetadata1.MetaDataKind := 'IndexColumns';
  Unimetadata1.Filter := 'TABLE_NAME="TEST" AND INDEX_NAME="PK_TEST"';
  Unimetadata1.Filtered := True;
  Unimetadata1.Open;
end;
ZEuS
Ср 19 июн 2013 09:13
Форум: Universal Data Access Components
Тема: UniConnection
Ответы: 3
Просмотры: 4400

Re: UniConnection

Работа с базой данных SQLite в read-only режиме в текущей версии UniDAC не поддерживается. Для того, чтобы запретить выполнение запросов на модификацию данных в приложении, вы можете установить свойство ReadOnly у TUniQuery или TUniTable в значение True.
ZEuS
Пт 05 окт 2012 13:27
Форум: InterBase Data Access Components
Тема: UniAlerter INET/inet_error: read errno = 10038
Ответы: 1
Просмотры: 14281

Re: UniAlerter INET/inet_error: read errno = 10038

Подобное сообщение в логе Firebird связано с особенностями обработки сокетов Firebird-ом при использовании алертера. Эта же ошибка воспроизводится при использовании стандартных InterBase-компонентов, поставляющих с Делфи. Мы не можем повлиять на данное поведение.
ZEuS
Пт 03 авг 2012 08:53
Форум: InterBase Data Access Components
Тема: Шифрование данных
Ответы: 9
Просмотры: 15387

Re: Шифрование данных

Мы планируем реализовать данную функциональность в одной из следующих версий IBDAC. Как только она будет реализована, соответствующая информация будет добавлена в History.
ZEuS
Пн 23 июл 2012 16:17
Форум: InterBase Data Access Components
Тема: Шифрование данных
Ответы: 9
Просмотры: 15387

Re: Шифрование данных

На данный момент шифрование параметров не реализовано из-за возможных неоднозначностей при расшифровке OUT-параметров.
Мы исследуем возможность реализации данной функциональности в одной из следующих версий IBDAC.
ZEuS
Вт 17 июл 2012 08:55
Форум: InterBase Data Access Components
Тема: Шифрование данных
Ответы: 9
Просмотры: 15387

Re: Шифрование данных

Да, исключение EInvalidEncData генерируется в том случае, если IBDAC не может расшифровать данные вообще (например, если в свойстве TIBCEncryptor.EncryptionAlgorithm установлен алгоритм шифрования, отличный от алгоритма, которым данные были зашифрованы). Свойство InvalidHashAction будет использовано уже в том случае, если IBDAC успешно расшифровал данные и высчитал хеш, но он не соответствует хешу, сохраненному в поле на сервере.
Для правильного перехвата исключения EInvalidEncData нужно изменить блок "except ... end" в приведенном примере следующим образом:

Код: Выделить всё

except
  on e: EInvalidEncData do
    Application.MessageBox('Невозможно расшифровать данные.', 'Ошибка',
      MB_OK + MB_ICONSTOP + MB_TOPMOST)
  else
    Application.MessageBox(PChar('Другая ошибка... '), 'Ошибка',
      MB_OK + MB_ICONSTOP + MB_TOPMOST);
end;
Исключение EInvalidEncData не является наследником EIBCError, т.к. не относится к исключительным ситуациям сервера Interbase/Firebird, а возникает при ошибках шифрования. Поэтому, на стадии компиляции возникает ошибка.
ZEuS
Пн 09 апр 2012 09:16
Форум: InterBase Data Access Components
Тема: IBDac. Роль в ConnectDialog
Ответы: 2
Просмотры: 5025

Добрый день.
Существует специальный форум, в котором пользователи могут разместить свои предложения по расширению функциональности компонент DAC. Вы можете оставить свой комментарий и проголосовать за ваше предложение здесь:
http://devart.uservoice.com/forums/1046 ... ect-dialog
Мы рассмотрим подобную возможность, если в этом будет достаточная заинтересованность пользователей.