Version history ===========================================
- 2.8.0 - 16.05.2017
- 2.7.7 - 16.05.2017
- 1.28.15 - 23.09.2016
- 1.27.0 - 05.07.2016
- 1.26.6 - 10.06.2016
- 1.26.0 - 09.05.2016
- 1.25.2 - 04.04.2016
- 1.25.1 - 29.03.2016
- 1.25.0 - 29.03.2016
- 1.22.1 - 24.02.2016
- 1.22.0 - 14.02.2016
- 1.21.5 - 11.02.2016
- 1.21.4 - 06.02.2016
- 1.21.3 - 28.01.2016
- 1.21.2 - 20.01.2016
- 1.21.1 - 19.01.2016
- 1.21.0 - 18.01.2016
- 1.20.0 - 08.01.2016
- 1.19.1 - 04.01.2016
- 1.18.1 - 17.12.2015
- 1.18.0 - 14.12.2015
- 1.17.7 - 10.12.2015
- 1.17.5 - 8.12.2015
- 1.16.0 - 19.11.2015
- 1.15.0 - 10.11.2015
- 1.13.0 - 02.11.2015
- 1.12.0 - 03.09.2015
- 1.11.0 - 16.08.2015
- 1.10.1 - 18.07.2015
- 1.9.10 - 04.07.2015
- 1.8.12 - 21.05.2015
- 1.8.0 - 05.03.2015
- 1.5.0 - 05.01.2015
- 1.4.0 - 07.11.2014
- 1.3.0 - 05.09.2014
- 1.2.0 - 27.08.2014
- 1.1.0 - 20.08.2014
- 1.0.0 - 04.08.2014
- 0.9.0 - 24.06.2014
- 0.8.0 - 04.06.2014
- 0.7.0 - 22.05.2014
- 0.6.0 - 11.05.2014
1.28.x series
- Added the ability to control the automated initialisation of keyspaces and turn it on or off.
- Added the ability to provide a custom query for keyspace initialisation.
- Added a new keyspace builder via
Querybuilder.keyspace
that allows building keyspace creation queries. - Removed default cluster builder settings that auto-disabled JMX metrics and monitoring.
1.27.0
- Removed support for
phantom-zookeeper
, module is no longer in use and support forfinagle-zookeeper
is no longer available for more recent versions of Finagle. - Bumped
"com.outworkers" %% "util"
to0.18.2
. - Bumped
javaxServlet
to3.0.1
. - Bumped Lift JSON version in tests to
3.0-RC3
. - Added ability to specify an
errorHandler
for theSessionProvider
, allowing users to deal with failures of connecting to Cassandra. - Changed all references of
com.websudos.util
tocom.outworkers.util
. - Added the
ttl
function to allow selecting the TTL of a column. - Fixed serialization problem when chaining multiple using part clauses.
- Added helper methods to the
DatabaseImpl
class, to allow automatically initialising the tables without broadcasting the need for animplicit session
.create
,createAsync
,drop
,dropAsync
,truncate
andtruncateAsync
. - Altered task to start
EmbeddedCassandra
. - Added ability to set passphrase for Maven Central publishing inside the Travis CI eco-system via encrypted Travis variables.
1.26.1
-
Added a new
Primitive.apply
method that produces necessary implicits for using enumeration columns as partition columns. Useimplicit val enumPrimtive = Primitive(SomeEnum)
to produce the necessary implicits for using an enumeration value inside aselect.where(_.enumCol eqs enumValue)
. -
Moved the entire changelog to the Github Wiki, removed it from the repository.
-
Fixed badge link for Maven Central publishing, link is pointing to parent
phantom_2.10
project which is now no longer published. -
Bumped Scala versions to
2.10.6
and2.11.8
respectively.
1.26.0
Breaking changes
-
Removed all Twitter libs and dependencies from the main DSL. References to
com.twitter.util
will no longer compile, and we have moved all the features of the old version to a new module calledphantom-finagle
. Support for Spools has also been move -
Removed all Play dependencies from the main DSL project, moved all the implementation specific
fetchEnumerator
to thephantom-reactive-streams
module. To use features such asfetchEnumerator
, you will now need to useimport com.websudos.phantom.reactivestreams._
-
Columns such as
SetColumn
,MapColumn
or evenJsonColumn
no longer require providing theOwner
andRecord
type parameters when defining the columns.
Instead of:
import com.websudos.phantom.dsl._
case class MyRecord(id: UUID, props: Map[String, String])
class MyTable extends CassandraTable[MyTable, MyRecord] {
object id extends UUIDColumn(this) with PartitionKey[UUID]
object props extends MapColumn[MyTable, MyRecord, String, String](this)
}
// you can now simply type
import com.websudos.phantom.dsl._
case class MyRecord(id: UUID, props: Map[String, String])
class MyTable extends CassandraTable[MyTable, MyRecord] {
object id extends UUIDColumn(this) with PartitionKey[UUID]
object props extends MapColumn[String, String](this)
}
0.6.0
- Adding support for conditional tests.
- Added support for
orderBy
in select queries. - Added support for Clustering columns.
- Added support for auto-generating Composite Keys.
- Added extensive tests for Secondary Indexes.
- Moved back to Scala reflection.
- Fixed field collection order.
- Added servlet container based tests to ensure Scala reflection is consistent.
- Simplifying Enumerators API.
- Added a changelog :)
- Added a table of contents in the documentation.
- Improved structure of test project.
- Added copyright information to a lot of files.
- Fixed license issue in Maven Central publishing license.
- Vastly simplified structure of collection operators and removed
com.websudos.phantom.thrift.Implicits._
- Fixed
null
handling bug inOptionalColumns
.
0.7.0
- Added a variety of compilation tests for the phantom query builder. They test what should compile and what shouldn’t, to verify compile time restrictions.
- Fixed support for Static columns.
- Bumped Twitter Scrooge version to 3.15.0
- Bumped Cassandra version to 2.0.7
- Fixed tests for TimeSeries
- Fixed tests for orderBy clauses.
- Fixed support for static columns.
- Fixed issues with using the
setIdX
List operator. - Integrated Scalatra servlet container tests in the same test project.
- Removed phantom-scalatra-test module
0.8.0
- PHANTOM-43: Added timestamp support for BatchStatements.
- PHANTOM-62: Added timestamp support for queries used in batch statements.
- PHANTOM-66: Added support for
SELECT DISTINCT
queries. - PHANTOM-72: Added ability to enable/disable tracing on all queries.
- PHANTOM-75: Restructure the query mechanism to allow sharing methods easily.
- PHANTOM-76: Added a
ifNotExists
method to Insert statements. - PHANTOM-78: Added ability to set a default consistency per table.
- PHANTOM-79: Added ability to chain multiple clauses on a secondary condition.
- PHANTOM-81: Fixed bug where count queries were always returning 1 because a
LIMIT 1
was improperly enforced. - PHANTOM-82: Changed the return type of a count query from
Option[Option[Long]]
toOption[Long]
. - PHANTOM-83: Enhanced phantom query builder to allow using
where
clauses forCOUNT
queries. - PHANTOM-84: Added common methods to GitHub documentation.
0.9.0
- PHANTOM-106: Fix broken links in the phantom documentation.
1.0.0
- PHANTOM-108: Adding an example Cassandra connector.
- PHANTOM-112: Fixing race condition in the default ZooKeeper connector implementation
1.1.0
- PHANTOM-105: The embedded Zookeeper client needs to connect before fetching data. Fixed connection state in Zk clients.
- PHANTOM-107: Add documentation for using our Zookeeper testing utilities.
- PHANTOM-113: Using a ZooKeeper Manager implementation to track availability and instantiation of ZooKeeper nodes.
1.2.0
- PHANTOM-115: Fix SBT plugin dependency caused by
publishSigned
task in the GPG plugin. Kudos to Stephen Samuel.
1.3.0
- PHANTOM-123: Fixed some documentation links.
- PHANTOM-127: Automatically collecting references to all UDT definitions.
- PHANTOM-131: Throwing an error when
PrimaryKey
andClusteringOrder
definitions are used in the same schema. - PHANTOM-134: Allowing users of
DefaultZooKeeperManager
to specify their own timeout for ZooKeeper connections. - PHANTOM-136: Added UDT examples to the UDT example module.
- PHANTOM-109: Added a reference collector to all fields of an UDT.
1.4.0
- Fixed more broken links in the documentation and added table with Future API methods.
- Implemented UDT columns and added serialisation tests.
- Moved syscall to get available processors to a one time only init for performance improvements.
- Fixed
BatchStatement.apply
from ignoring the argument list passed to the method. - Fixed
DefaultClusterStore
to allow overriding connection timeouts and the CQL query used to initialise keyspaces. - Allowing users to override how ports are parsed once retrieved from ZooKeeper.
- Allowing users to override cluster builders with their own custom implementation.
- PHANTOM-93: Finalising ScalaStyle build integration.
1.5.0
- Fixed several typos and broken links in the README.
- Added documentation for resolver requirements at the top of the repository.
- Added clarification for Scala 2.11 release.
- Improved UDT implementation.
- Heavy performance improvements for iterator processing (thanks @benjumanji for diligently profiling every bit).
- Added full support for Scala 2.11.
1.8.0
1.8.12
- Fixed encoding support for strings containing a single quote
'
. - Bumped util library dependency to
0.8.8
to include small bug fixes and more robust testing in the util library. - A custom patience timeout for
successful
calls on Futures has been created to replace the now obsolete implicit fromcom.websudos.util.testing._
. - Bumped Twitter Finagle deps to
6.25.0
and Twitter Util to6.24.0
. - Removed hard coded list lengths from
TimeSeriesTest
in favour of named variables. This compensates for the fix in the util library, where before0.8.4
a call togenList[T](n)
would generaten - 1
elements instead ofn
. This has been fixed and phantom updated to compensate for all changes. - Bumped
cassandra-unit
version to2.0.2.6
as the newer version is available on our public Bintray repository. - Removed Websudos Artifactory resolvers and replaced with Bintray configuration.
- Added a Bintray version badge to automatically show the latest available Bintray version on the GitHub README.
- Separated performance related tests written with ScalaMeter into a new configuration called
perf
. Tests can now be semantically distinguished by their purpose andsbt:test
will not run performance tests by default. Instead, benchmarks are run usingperf:test
exclusively, which fixesscoverage
integration during the Travis CI phase. - Fixed a few deadlinks in the
README.md
. - Removed
Unmodifiable
trait market from the implementation ofIndex
, which now allows users to update the value of secondary keys. - Separated
DELETE
query serialization concerns into a specialized builder calledQueryBuilder.Delete
. - Added tests for
DELETE
query serialisation and for the newQueryBuilder.Delete
. - Removed fixed Thrift dependency that was enforcing
org.apache.thrift % libthrift % 0.9.1
from thephantom-thrift
module. Consumers of Thrift modules can now set their own Scrooge and Thrift version withoutphantom-thrift
interfering with them and causing serialization problems. - Added a
RootThriftPrimitive
to allow easily creating an implicit primitive for custom types. This is used when Thrift columns are part of the primary key. - Moved the duplicate
package.scala
from the test part ofcom.websudos.phantom.thrift
to avoid strange overloading of imports between the main module and test module. Also fixes compilation warning message about conflicting members. - Fixed support for nested Primitive types. A
Column[Owner, Record, T
can now de-serialize to a type that is completely different fromT
. This fixes edge scenarios like theDateTimePrimitive
of typePrimitive[org.joda.time.DateTime]
which has no proprietary extractor and is instead just a thin layer around the existingjava.util.Date
extractor. Phantom can now feed in the correct extraction type and deserialize columns likeMapColumn[Owner, Record, DateTime, String]
. - Bumped ScalaTest dependency to version
2.2.4
. - Fixed serialization of Blob columns by using Datastax Java Driver helper object
Bytes
. - Added support for SBT version management via Twitter’s
sbt-package-dist
published via the custom Websudos fork:"com.websudos" %% "sbt-package-dist" % "1.2.0"
. - Bumped Scala version to
2.10.5
and2.11.6
. - Added dependency resolution retry during Travis CI phase. Travis will now retry to fetch dependencies 3 times before giving up, which fixes most timeout errors during dependency resolution and lets builds consistently pass.
- Moved publishing infrastructure to Bintray and added a dependency on
"me.lessis" %% "bintray-sbt" % "0.3.0"
to publish artefacts to Bintray. - Bumped SBT version to
0.13.8
and bumpednet.virtualvoid.dependencygraph
version to0.7.5
inplugins.sbt
.
1.8.13
- Removed
TestZookeeperConnector
from the defaultphantom-testkit
. - Removed
BaseTest
andFeatureBaseTest
fromphantom-testkit
. - Removed dependency on
phantom-zookeeper
from the default implementation ofphantom-connectors
. This was a very bad accident and Zk dependencies were being pulled in even if the end user wasn’t relying on ZooKeeper for service discovery.
1.10.0
- Bumped Scala version to 2.11.7 for the 2.11.x releases.
- Re-added ability to set consistency levels in every query except Batch queries.
- Moved implementation of query execution back to simple statements in the Datastax Java driver.
- Allowing Datastax Java driver to set the consistency level and control final levels of serialization.
- Added ability to change CQL serialization based on CQL protocol version.
1.11.0
- Changed the serialization technique used for consistency levels to use a Scala
Option[ConsistencyLevel]
definition instead of a nullable field. - Added support for protocol level specification of consistency levels inside
BatchStatement
. - Removed most of the remaining documentation from the GitHub readme and placed in the Wiki.
- Added a list of tutorials for using phantom, including basic guidelines.
- Added a default forwading mechanism for a
KeySpace
definition inside theConnector
obtained viaKeySpaceDef
. - Upgraded to use Diesel engine for query operations.
- Upgraded to use Diesel engine for multi-part queries.
1.12.0
- Removed support for
java.util.Date
in the default date columns. This has been removed in Cassandra 2.2. - Replaced default date parsing from
java.util.Date
withcom.datastax.driver.core.LocalDate
primitive. - Added a
LocalDate
column to offer complementary support forcom.datastax.driver.core.LocalDate
,java.util.Date
andorg.joda.time.DateTime
. - Replaced
BatchQuery
serialization to usecom.datastax.driver.core.BatchStatement
internally. - Removed superfluous check in
ExecutableQuery
for nullable consistency level definitions.
1.13.0
- Added support for
maxTimeuuid
andminTimeuuid
in query columns. - Added support for multiple
orderBy
statements in a single clause. - Removed implementation of
SessionProvider
in favour of a single global session object inside phantom. - Fixed implementation of logging by using logf4j12-over-slf4j bridge and logback-classic.
- Removed IPv6 connectivity support from the Travis build.
- Added
.jvmopts
to the Travis build configuration to prevent automated attempts to IPv6 connections in the Datastax driver. - Removed a lot of
.get
accessor calls in the test methods in favour of the idiomaticOptionValues
DSL from ScalaTest.
1.15.0
- Added support for Reactive Streams in phantom, with a default mapper subscriber.
- Implemented a publisher for reactive streams based on Play Enumerators convertions.
1.16.0
- Fixed buffer overflow issue in Reactive streams.
- Added tests for the reactive streams publisher.
- Added support for binding in INSERT JSON clauses.
- Forcing request builders in reactive streams to be
Batchable
. - Allowing elements to be derived from
Throwable
by adding anErrorWrapper
to error propagation in actors. - Adding support for binding
scala.Enumeration#Value
in prepared statements. - Bumped
xsbt-web-plugin
to2.0.4
.
1.17.5
- Fixed support for token operators for multiple tokens.
- Fixed support for binding single arguments to a prepared statement by adding specialized 1 arg methods.
- Adding better comments to the basic implementation.
- Removed unused dead code in operator query columns for multi-column token operators.
- Deprecated shutdown method on the main
Manager
.
1.17.7
- Fixed serialization of
InsertQuery
builders that specify a using clause. - Fixed serialization of
InsertJsonQuery
builders that specify a using clause. - Fixed primitive serialization inside
PreparedStatements
. - Added primitive parsing of
BigDecimal
inside prepared statements. - Added support for binding lists inside prepared statements.
- Fixed TTL support in
UpdateClause
. - Fixed protocol version comparisons to address non standard greater than 1 results in
compareTo
implementation.
1.18.0
- Added a query options DSL to fix using
consistencyLevel
settings inSelectQuery
. - Added a
QueryOptions
DSL to replaceOption[ConsistencyLevel]
setting inExecutableQuery
. - Bumped major version to
1.18.0
to address backwards incompatible change. - Fixed serialization issue in defining
LeveledCompactionStrategy
.
1.18.1
- Adding the ability to use
gt
,gte
,lt
,lte
andisNot
operators with a conditional update clause. - Bumping the version to
1.18.1
.
1.19.0
- Deprecated and completely removed the
phantom-teskit
module as it is now obsolete. - Upgraded the entire set of tests to use the new
Database
API. - Added support for updating specific entries in a
MapColumn
. - Added support for deleting specific entries from a
MapColumn
. - Fixed timeout configuration for ScalaTest based entries.
- Updated examples to showcase new Database API.
1.19.1
- Fixed
maxTimeUUID
andminTimeUUID
implementations to use proper serialization forTimeUUID
range queries.
1.20.0
- Renamed all CAS comparison operators to match
is$Op
format. - Added
ExecutableCreateStatementsList
to fix index creation issues insideDatabase.autocreate
. - Added support for Map entry comparisons and the
Entries
mixin trait for map columns with secondary indexes.
1.21.0
- Added support for preparing
UpdateQuery
viap_where
->p_and
pairs andp_modify
->p_and
pairs. - Added more tests for prepared delete queries and update queries.
- Added the ability to set more options on a statement before executing it.
- Added ability to prepare map entry update clauses.
- Bumped util library version to
0.10.8
. - Bumped Datastax Java Driver version to
3.0.0-rc1
and usingnew SimpleStatement
constructor in favour the now removedsession.newSimpleStatement
. - Added ability to modify a
statement
directly the execution operation to set options via the Java DSL. - Added support for
Table.select.function(t => fn(t.column)
, includingdateOf
,unixTimestampOf
andwritetime
. - Increased default schema synchronisation timeout to 10 seconds inside phantom tests.
- Added
sbt-sonatype
plugin to re-enable Maven Central syncing.
1.21.1
- Added ability to merge batch queries.
- Adding support for
iterator
method on queries.
1.21.2
- Fixing serialization of Compaction properties in CREATE and ALTER queries.
1.21.3
- Fixing type evidence required for
p_and
chains inUpdateQuery
.
1.21.4
- #414 Added ablity to use prepared statements inside of batch statemets.
- #417 Corrected cql type for LocalDate and Date accessor method.
- #412 Bumped Datastax Java Driver version to 3.0.0
1.21.5
- Added SmallInt and TinyInt support.
- Added a new contributor to the list.
1.22.0
- PHANTOM-194: Fixed serialization of
Table.select.distinct
queries. - Added support for
LocalDate
columns. - Added
driver-extras
dependency from the Datastax set.
1.22.1
- Added a
DateTime
augmenter in the default package capable of producingTimeUUID
values from aDateTime
. - Fixed serialization of
minTimeuuid
andmaxTimeuuid
clauses to use dates in ISO formats. - Added tests to test
timeuuid
based date range selection withminTimeuuid
andmaxTimeuuid
.
1.25.0
- Changed
caching
property serialization inQueryBuilder
to adjust to protocol version changes. - Fixed bug in prepared statements which prevented multiple prepared SET clauses from being used.
- Changed serialization order in an
UpdateQuery
to always provide the SET clause arguments first. This is done to address the internal bind serialization issue, since the bind won’t attempt to do any type matching, order of the arguments is the only element that dictates serialization.
1.25.1
- Fixed README to reflect up to date licensing clauses and remove open source wording.
- Using
Tupler
instead ofGeneric
and reverting type cast from HList -> Tuple for some compile time clarity.
1.25.2
- Fixing more
README
issues. - Removed contributor from the list.
- Fixed changelog.
- Fixed casing of word
KEYS
tokeys
to fit CQL variant.