Статьи

Новые драйверы CUBRID PHP и PDO теперь поддерживают altHosts и loadBalancing

cubrid_php_logo.png

Мы рады сообщить, что мы обновили наши драйверы CUBRID PHP и PDO для выкладывания множества улучшений и исправлений ошибок. Последние версии могут быть установлены из   пакетов PUBL CUBRID  и  PDO_CUBRID  . Ниже приведен список улучшений, появившихся в версиях cubrid-9.1.0.0004 и pdo_cubrid-9.1.0.0003.

  • Поддержка параметров подключения.
  • Улучшена поддержка шардинга базы данных CUBRID.
  • Поддержка типов данных коллекции.
  • Удалена динамическая зависимость CUBRID CCI API.
  • Улучшена поддержка LOB-данных.
  • Улучшенная документация.
  • Другие незначительные улучшения.

Поддержка параметров подключения

[ APIS-580 ] Теперь драйверы PHP и PDO поддерживают все  параметры подключения,  поддерживаемые базовым API-интерфейсом CCI. При подключении к брокеру CUBRID вы можете передать список различных опций, таких как список альтернативных хостов, которые можно использовать либо в среде высокой доступности для обеспечения бесперебойной отказоустойчивости, либо в среде без высокой доступности для обеспечения балансировки нагрузки на уровне драйвера. Они особенно полезны в среде CUBRID SHARD.

Вот пример в PHP:

$conn = cubrid_connect($host, $port, $db, $user, $password, $createNewLink, "altHosts=192.168.0.2:33000,192.168.0.3:33000&rcTime=600");

Также можно связаться с URL:

$conn = cubrid_connect_with_url("CUBRID:localhost:33000:demodb:user:password:?login_timeout=100&altHosts=192.168.0.2:33000,192.168.0.3:33000&rcTime=600");

Или в PDO:

$db = new PDO("cubrid:dbname=demodb;host=localhost;port=33000", $user, $password, array("altHosts"=>"192.168.0.2:33000","rcTime"=>"600"));

Улучшена поддержка шардинга базы данных CUBRID

Мы исправили ошибку в драйвере PHP [ APIS-562 ], которая препятствовала выполнению  DELETE запросов cubrid_execute() функцией в среде CUBRID SHARD.

Поддержка типов данных коллекции

[ АПИС-555 ] Теперь PHP и PDO драйверы обеспечивают встроенную поддержку  CUBRID типов сбора данных ,  как  SET, MULTISETLIST и  SEQUENCE. Существует несколько способов вставить массив значений в столбец типа данных коллекции. 

Вставка массива целых

1
2
3
4
5
6
7
8
9
$sql_stmt_insert = "INSERT INTO set_tbl_int VALUES (?);";
$data = array(123,456,789);
 
$stmt = $dbh->prepare($sql_stmt_insert);
 
// Provide the data type of elements as a third parameter.
$ret = $stmt->bindParam(1, $data, PDO::PARAM_INT);
 
$ret = $stmt->execute();

ВСТАВКА МНОЖЕСТВА СТРОК

Чтобы вставить массив строк, установите тип данных PDO в  NULL. Это скажет PDO не выполнять преобразование.

1
2
3
4
5
6
7
8
9
10
$sql_stmt_insert = "INSERT INTO set_tbl_str VALUES (?);";
$data = array("abc","def","ghi");
 
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
 
// When inserting an array of string, set the data type to NULL.
// This will tell PDO not to perform any conversion.
$ret = $stmt->bindParam(1, $data, PDO::PARAM_NULL);
 
$ret = $stmt->execute();

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

$sql_stmt_insert = "INSERT INTO set_tbl_str VALUES (?);";
$data = array("abc","def","ghi");
 
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
 
$ret = $stmt->bindParam(1, $data, PDO::PARAM_INT);
 
$ret = $stmt->execute();

Третий способ вставить массив строк — указать тип данных CUBRID в пятом параметре, как показано ниже.

$sql_stmt_insert = "INSERT INTO set_tbl_str VALUES (?);";
$data = array("abc","def","ghi");
 
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
 
$ret = $stmt->bindParam(1, $data, 0, 0, "varchar");
 
$ret = $stmt->execute();
  1. Обратите внимание, что  PDO::PARAM_ARRAY это нельзя использовать, потому что PDO не поддерживает его.
  2. PDO::PARAM_STR также не должен использоваться, потому что PDO выдаст ошибку, что преобразование массива в строку не разрешено.

Удалена динамическая зависимость CUBRID CCI API

[ APIS-559 ] Начиная с этого выпуска драйверы CUBRID PHP и PDO не имеют динамической зависимости от драйвера CUBRID CCI. Вместо этого мы теперь скомпилируем драйвер PHP и PDO вместе с исходным кодом CCI. Это позволяет устанавливать драйверы PHP и PDO в средах, где сервер CUBRID не установлен. Это еще один шаг к тому, чтобы предоставить независимые от платформы драйверы PHP и PDO.

Улучшена поддержка LOB-данных

  • [ APIS-556 ] — Мы исправили ошибку, связанную с LOB,  cubrid_fetch() которая пыталась выделить 4 миллиарда байт.
  • [ APIS-364 ] — также исправлена ​​ошибка, которая затрагивала пользователей Windows, когда пользователь пытался экспортировать данные больших объектов из базы данных, которая была успешно импортирована из файла до экспорта.

Улучшения документации

  • [ APIS-553 ] — Страница справочника для  cubrid_close_request() должна быть отредактирована.
  • [ APIS-554 ] —  cubrid_connect_with_url() пример не имеет обновленного URL-адреса соединения.
  • [ APIS-557 ] —  cubrid_lob2_seek64 пример не работает должным образом.
  • [ APIS-558 ] — неверная документация.
  • [ APIS-584 ] — Некоторые коды примеров в драйвере php.net несколько запутаны.
  • [ APIS-596 ] — таблица ‘test_lob’, которая не была создана изначально, может привести к некоторым недоразумениям.

Другие незначительные улучшения

  • [ APIS-120 ] — Возвращаемое значение неверно при передаче параметра даты в метод cubrid_bind.
  • [ APIS-121 ] — Возвращаемое значение не является ложным при передаче неверного времени в метод cubrid_bind.
  • [ APIS-358 ] — Ошибка создания таблицы при использовании временной отметки по умолчанию «2038-01-19 12:14:07».
  • [ APIS-513 ] — Код ошибки CAS не ожидается в Windows.
  • [ APIS-560 ] — Невозможно загрузить PHP API 9.1.0.0003 в CentOS 5.6: неопределенный символ: pthread_create в Unknown в строке 0.
  • [ APIS-583 ] — Функция cubrid_get_class_name () выдает предупреждение, если выбирает данные из системной таблицы.
  • [ APIS-586 ] — cubrid_bind () не работает должным образом при вставке битовых данных.
  • [ APIS-587 ] — cubrid_bind () не поддерживает выбор битовых данных из подготовленного оператора.
  • [ APIS-549 ] — Предупреждения при сборке API PHP / PDO через PECL.

Что дальше

В следующей версии мы сосредоточимся на улучшении поддержки Mac OS X. Текущий выпуск был подготовкой к этому. После удаления динамической зависимости CCI мы можем легко скомпилировать наши драйверы PHP ad PDO для Mac OS X.

Следите за обновлениями!

CUBRID 8.4.3 Release - Загрузить сейчас