Datatypes
PHP Driver supports all Cassandra datatypes
Background
- Given
- a running Cassandra cluster
Using Cassandra value types
- Given
- the following schema:
CREATE KEYSPACE simplex WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 }; USE simplex; CREATE TABLE values ( id int PRIMARY KEY, bigint_value bigint, decimal_value decimal, double_value double, float_value float, int_value int, varint_value varint, timestamp_value timestamp, blob_value blob, uuid_value uuid, timeuuid_value timeuuid, inet_value inet ); INSERT INTO values ( id, bigint_value, decimal_value, double_value, float_value, int_value, varint_value, timestamp_value, blob_value, uuid_value, timeuuid_value, inet_value ) VALUES ( 0, -765438000, 1313123123.234234234234234234123, 3.141592653589793, 3.14, 4, 67890656781923123918798273492834712837198237, 1425691864001, varcharAsBlob('0x000000'), ab3352d9-4f7f-4007-a35a-e62aa7ab0b19, maxTimeuuid('2015-03-11 14:47:10+0000'), '200.199.198.197' );
- And
- the following example:
<?php $cluster = Cassandra::cluster()->build(); $session = $cluster->connect("simplex"); $result = $session->execute("SELECT * FROM values"); $row = $result->first(); foreach ($row as $name => $value) { if ($name !== "id") { echo "{$name} => {$value}" .PHP_EOL; } }
- When
- it is executed
- Then
- its output should contain these lines in any order:
bigint_value => -765438000 blob_value => 0x3078303030303030 decimal_value => 1313123123.234234234234234234123 double_value => 3.1415926535898 float_value => 3.14000010490417 inet_value => 200.199.198.197 int_value => 4 timestamp_value => 1425691864001 timeuuid_value => 7f0a920f-c7fd-11e4-7f7f-7f7f7f7f7f7f uuid_value => ab3352d9-4f7f-4007-a35a-e62aa7ab0b19 varint_value => 67890656781923123918798273492834712837198237
since cassadra v2.2
Using Cassandra tinyint and smallint types
- Given
- the following schema:
CREATE KEYSPACE simplex WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 }; USE simplex; CREATE TABLE values ( id int PRIMARY KEY, tinyint_value tinyint, smallint_value smallint, );
- And
- the following example:
<?php $cluster = Cassandra::cluster()->build(); $session = $cluster->connect("simplex"); $options = array('arguments' => array(1, new Cassandra\Tinyint(127), new Cassandra\Smallint(32767)) ); $session->execute("INSERT INTO values (id, tinyint_value, smallint_value) VALUES (?, ?, ?)", $options); $result = $session->execute("SELECT * FROM values"); $row = $result->first(); foreach ($row as $name => $value) { if ($name != "id") { echo "{$name} => {$value}" .PHP_EOL; } }
- When
- it is executed
- Then
- its output should contain:
smallint_value => 32767 tinyint_value => 127
since cassadra v2.2
Using Cassandra date type
- Given
- the following schema:
CREATE KEYSPACE simplex WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 }; USE simplex; CREATE TABLE date_values ( id int PRIMARY KEY, date_value date );
- And
- the following example:
<?php $cluster = Cassandra::cluster()->build(); $session = $cluster->connect("simplex"); $options = array('arguments' => array(1, new Cassandra\Date(0))); $session->execute("INSERT INTO date_values (id, date_value) VALUES (?, ?)", $options); $result = $session->execute("SELECT * FROM date_values"); $row = $result->first(); echo "date_value => {$row['date_value']->toDateTime()->format('Y-m-d H:i:s')}" . PHP_EOL;
- When
- it is executed
- Then
- its output should contain:
date_value => 1970-01-01 00:00:00
since cassadra v2.2
Using Cassandra time type
- Given
- the following schema:
CREATE KEYSPACE simplex WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 }; USE simplex; CREATE TABLE time_values ( id int PRIMARY KEY, time_value time );
- And
- the following example:
<?php $cluster = Cassandra::cluster()->build(); $session = $cluster->connect("simplex"); $datetime = new \DateTime("1970-01-01T00:00:01+0000"); $options = array('arguments' => array(1, Cassandra\Time::fromDateTime($datetime))); $session->execute("INSERT INTO time_values (id, time_value) VALUES (?, ?)", $options); $result = $session->execute("SELECT * FROM time_values"); $row = $result->first(); echo "time_value => {$row['time_value']}" . PHP_EOL;
- When
- it is executed
- Then
- its output should contain:
time_value => 1000000000