NAME

Protocol::CassandraCQL::Type - represents a Cassandra CQL data type

DESCRIPTION

Objects in this class represent distinct types that may be found in Cassandra CQL3, either as columns in query result rows, or as bind parameters to prepared statements. It is used by Protocol::CassandraCQL::ColumnMeta.

CONSTRUCTOR

$type = Protocol::CassandraCQL::Type->from_frame( $frame )

Returns a new type object initialised by parsing the type information in the given message frame.

METHODS

$name = $type->name

Returns a string representation of the type name.

$bytes = $type->encode( $v )

Encodes the given perl data into a bytestring.

$v = $type->decode( $bytes )

Decodes the given bytestring into perl data.

$message = $type->validate( $v )

Validates whether the given perl data is valid for this type. If so, returns false. Otherwise, returns an error message explaining why.

COLLECTION TYPES

$etype = $type->element_type

Returns the type of the elements in the list or set, for LIST and SET types.

$ktype = $type->key_type

$vtype = $type->value_type

Returns the type of the keys and values in the map, for MAP types.

DATA ENCODINGS

The following encodings to and from perl data are supported:

ASCII

To or from a string scalar, which must contain only US-ASCII codepoints (i.e. ord <= 127).

BIGINT, BOOLEAN, COUNTER, DECIMAL, FLOAT, INT

To or from a numeric scalar.

BLOB

To or from an opaque string scalar of bytes.

DECIMAL

To or from an instance of Math::BigFloat, or from a regular numeric scalar.

TIMESTAMP

To or from a numeric scalar, representing a UNIX epoch timestamp as a float to the nearest milisecond.

UUID, TIMEUUID

To or from a string containing hex digits and hyphens, in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

VARCHAR

To or from a string scalar containing Unicode characters.

VARINT

To or from an instance of Math::BigInt, or from a regular numeric scalar.

LIST, SET

To or from an ARRAY reference containing elements.

MAP

To or from a HASH reference, where the keys used must be of some string type.

SPONSORS

This code was paid for by

AUTHOR

Paul Evans <leonerd@leonerd.org.uk>