-
Notifications
You must be signed in to change notification settings - Fork 32
Home
The DSN format matches the following syntax:
"cassandra:[host=ip_address;port=port_number],+"
Sample connections syntaxes:
"cassandra:host=10.0.0.1;port=9160,host=10.0.0.2;port=9162;cqlversion=3.0.0"
"cassandra:host=localhost;port=9160"
The connection respects the PDO construction:
$db_handle = new PDO("cassandra:host=localhost;port=9160", $username, $password);
These options can be passed in the fourth argument for PDO constructor
PDO_ATTR_TIMEOUT | Connection timeout value | |
PDO::CASSANDRA_ATTR_THRIFT_DEBUG | Converts thrift debug output into PHP warnings | |
PDO::CASSANDRA_ATTR_PRESERVE_VALUES | boolean | Preserves values as they come from Cassandra |
PDO::CASSANDRA_ATTR_NUM_RETRIES | integer | The amount of connection retries |
PDO::CASSANDRA_ATTR_RETRY_INTERVAL | integer | Sets how many times to keep retrying a host before marking it as down. |
PDO::CASSANDRA_ATTR_MAX_CONSECUTIVE_FAILURES | integer | Sets how many times to keep retrying a host before marking it as down. |
PDO::CASSANDRA_ATTR_LINGER | integer | How long does the socket linger after it's being closed |
PDO::CASSANDRA_ATTR_NO_DELAY | boolean | Whether to enable/disable Nagle algorithm |
PDO::CASSANDRA_ATTR_CONN_TIMEOUT | integer | Connection timeout |
PDO::CASSANDRA_ATTR_RECV_TIMEOUT | integer | Receive timeout |
PDO::CASSANDRA_ATTR_SEND_TIMEOUT | integer | Send timeout |
PDO::CASSANDRA_ATTR_COMPRESSION | boolean | Whether to enable/disable compression |
PDO::CASSANDRA_ATTR_THRIFT_DEBUG | boolean | Converts thrift debug output into PHP warnings |
PDO::CASSANDRA_ATTR_PRESERVE_VALUES | boolean | Preserves values as they come from Cassandra |
Transactions are not supported and calling PDO::beginTransaction will result in an exception.
$db_handle->exec("UPDATE mytable SET my_int=42 WHERE my_key='awesome');
$stmt = $db_handle->prepare("SELECT my_int FROM my_table WHERE my_key=:key;");
$stmt->bindValue(':my_key, 'awesome');
$stmt->execute();
print_r($stmt->fetch(PDO::FETCH_ASSOC));
Cassandra decimal type is implemented using variable precision. This means that according to the actual size of the unscaled value (uv), the uv can be stored on an integer or a n bytes number.
PHP has no core support for multiprecision numbers. To avoid to add dependencies on external libraries such as GMP, the values are returned as an array representing the uv as is:
Value | Type | Explanation |
---|---|---|
scale_factor | int | 10 power - scalefactor |
unscaled_val | int,long | Least significant part (1 time) |
unscaled_val | long | (0..n times) |
unscaled_val | int,long | (0,1 time) Most significant part |
E.G 4242.21 would be represented as follow:
Value | Type | Explanation |
---|---|---|
2 | int | scale factor |
424221 | long | unscaled_val |
112233445566778899.112233445566778899 would be represented as follow:
Value | Type | Explanation |
---|---|---|
18 | int | scale factor |
8234495237290528275 | long | unscaled_val |
6084187275451764 | int | unscaled_val Most significant type |
The value can be calculated like this: 8234495237290528275 + 6084187275451764 * 2 power 64