##2.0.2
*Fix bug #359. The labels were not being handled properly.
UnionStep
is now optimized by SqlgUnionStepBarrier
and Startstep
with SqlgStartStepBarrier
.
- Added support for
postgresql
array operators via PR
*Upgrade to TinkerPop 3.4.1, support added for docker/travis #358
*Fix bug #344. Fix generation of WHERE
clause.
*Fix bug #339. Fix the in out vertices being incorrectly set on updating of an edge.
*Fix bug #336. Added a check for the presence of partitions.
*Fix bug #335. Remove ONLY
from TRUNCATE ONLY
statement on
postgresql as its not supported by partitioned tables.
- Added support to specify a custom datasource.
*Fix bug #332. Added quotes to the partition
sql expression.
-
Fix bug #329. Sqlg now only allows topology changes to be made when no write threads are active. It will detect a dead lock and throw an exception if a topology thread is waiting on a write thread that is waiting on the topology thread.
-
Fix bug #317. Made the timestamp precondition drop the 3 zero's of the nano seconds. ZULU JDK has more nano's than Oracle JDK and they are dropped by the database.
##2.0.1
- TestMultiThread.shouldExecuteWithCompetingThreads was failing on
RDBMS
that do not support transaction schema manipulation. Creating the schema upfront now. - Fix bug #322 Leaked database connections if
SqlgGraph
failed to start up. - Fix bug #321 Fix a bug with
P.without
. - Fix bug #320 Fix regressions with respect to Sqlg executing properly in the gremlin console.
##2.0.0
- Add user supplied primary key support.
- Add partitioning support on Postgresql 10.
- Add sharding support on Postgresql 10 using the Citus extension.
- Optimize the
PropertiesStep
andPropertyMapStep
to only query the database for the requested properties and not for all properties as is the default. - Remove auto sorting of columns on table creation. It should be done at the application level.
##1.5.2
- Upgrade to TinkerPop 3.3.3
- Add docker image for Postgresql
- Support additional properties on BulkAddEdge #300
- Fix concurrency bug on MsSqlServer batch mode. Take table lock on BulkCopy.
- Fix concurrency bug on Postgresql batch mode. The id sequence is incremented before the copy insert happens.
- Added MySql support. Uses MariaDb dialect but the MySql driver.
- Improve memory consumption by removing closed prepared statements from the cache.
##1.5.1
- Add the ability to set the
fetchSize
on the jdbcjava.sql.Statement
. - Fix bug #272
- Make gremlin console work. Tinkerpop made some minor changes to the console that made it stop working.
##1.5.0
- Optimize
DropStep
i.e.drop()
.TRUNCATE
is used for the most simplest cases. ElseDELETE
statements are generated. If thetraversal
itself can not be optimized then barrier strategy is used to cache the starts before deleted them all in one statement. - Upgrade dependencies to latest in sonatype. #247
- Fix bug #246
- Optimize
OrStep
andAndStep
to push the predicates down to the db if they are trivial. - Optimize
NotStep
to barrier the starts. - Optimize
AndStep
to barrier the starts. - Optimize
OrStep
to barrier the starts. - Optimize
WhereTraversalStep
to barrier the starts. - Optimize
RepeatStep
s until traversal to barrier the starts. - Replace
TraversetSet
inExpandableStep
with anArrayList
inSqlgExpandableStep
.TravererSet
has a backingMap
ofTraverser
which for Sqlg is always aSqlgTraverser
. AsSqlgTraverser
always holds the fullPath
adding the barriered (cached) starts to the map is to heavy. Seeing as Sqlg does not use bulking theTraverserSet
s logic is not needed. - Optimize the
TraversalFilterStep
to barrier the starts. - Upgrade to Tinkerpop 3.3.0
##1.4.1
- Added new predicate to compare 2 properties on the same label.
- Added support for
has("property")
andhasNot("property")
##1.4.0
- Added support for MariaDb
- Added support for MSSqlServer
- Added barrier optimization for unoptimized steps. This optimization barriers (cache) the incoming traversers and
performs the next step for all the traversers at once. It uses the sql
VALUES
expression for this.
Currently the optional
, choose
, repeat
and local
steps have this optimization.
- Added batch mode support for all dialects.
##1.3.3
-
TopologyInf
support forremove(boolean preserveData)
added. Thanks to JPMoresmau -
Replace
ResultSet.getObject(index)
withResultSet.getString/Int...
as its faster. -
Removed Hazelcast. The topology is now distributed using Postgresql's
lock
to hold a global lock across multiple Graphs and JVMs and aV_log
table which hold the changes made. The changes are in turn sent to other Graphs and JVMs using Postgresql'snotify
mechanism. -
Added
TopologyListener
as a mechanism to observe changes to the topology. -
Added support for global unique indexes. This means that a unique index can be placed on multiple properties from any Vertex or Edge.
-
Rewrite of the topology/schema management.
SchemaManager
is replaced withTopology
. There are now classes representing the topology.Topology
,Schema
,VertexLabel
,EdgeLabel
,PropertyColumn
,Index
andGlobalUniqueIndex
-
Strengthened the reloading of the topology from the information_schema tables. This highlighted some limitations. It is not possible to tell a primitive array from a object array. As such all arrays are loaded as object arrays. i.e.
int[]{1,2,3}
will becomeInteger[]{1,2,3}
Example of how to fix a property' type
update sqlg_schema."V_property" set type = 'byte_ARRAY' where name = 'password' and type = 'BYTE_ARRAY' update sqlg_schema."V_property" set type = 'byte_ARRAY' where name = 'password_salt' and type = 'BYTE_ARRAY'
-
Fix bug #116
If a
RepeapStep
could not be optimized then the incoming emitElement
did not get a label so it was not being returned from the sql.
##1.3.2
- Ensure SqlgGraphStepStrategy and SqlgVertexStepStrategy fires before InlineFilterStrategy.
- Fix a bug where hasId uses the P.neq predicate.
- Use BIGSERIAL for auto increment columns in Postgresql #91
- Fix bug #92
- SqlgGraph.bulkAddEdges to take a Collection of ids as opposed to a List. Fix bug #102
- Fix bug #73 Thanks to JPMoresmau
##1.3.1
- 1.3.0 uploaded strange byte code, this fixes that.
##1.3.0
- Upgrade to TinkerPop 3.2.2
- Added H2 support.
- Added support for getting the data source from JNDI.
- Optimize `SqlgGraph.bulkAddEdges(...) to use the correct types for the in and out properties. This has a marginal performance increase.
- Refactored pom to separate out
gremlin-groovy
to be an optional dependency.
##1.2.0
- Optimize lazy iteration. Remove unnecessary list creation for managing state.
- Add thread local
PreparedStatement
cache, to close all statements on commit or rollback. - Refactor the vertex transaction cache to use a
WeakHashMap
. - Refactor Sqlg to lazily iterate the sql
ResultSet
. - Add all optimizations to
LocalStep
. - Refactor
RepeatStep
optimization to follow the same sql pattern as theOptionalStep
optimization. - Optimized the
OptionalStep
. - Optimize
hasId(...)
- Sqlg stores the schema in the graph. It is accessible via the
TopologyStrategy
. eg.TopologyStrategy.build().selectFrom(SchemaManager.SQLG_SCHEMA_SCHEMA_TABLES)
- Remove
SqlgTransaction.batchCommit()
as is no longer useful as the embedded topology change forced sqlg to auto flush the batch before any query. - Add support for
java.time.ZonedDateTime
,java.time.Duration
andjava.time.Period
- Add support for array types in batch mode.
String[], int[], double[], long[], float[], short[], byte[]
##1.1.0.RC2
- Use special characters to separate label + schema + table + column as opposed to a period. Periods may now be present in property names.
- Change postgresql copy command to use the csv format. This allows for specifying a quote character which prevents nasty bugs where backslash characters in the value escapes the delimiter.
- Added
SortedTree
. A utility class that wraps TinkerPop's Tree using a TreeMap instead.