Мы рады сообщить, что мы обновили наши драйверы 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
, MULTISET
, LIST
и 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();
- Обратите внимание, что
PDO::PARAM_ARRAY
это нельзя использовать, потому что PDO не поддерживает его. 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.
Следите за обновлениями!