You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2023/07/27 17:20:39 UTC
[tinkerpop] branch master updated (c93705c7a5 -> c456e943ce)
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
from c93705c7a5 Create gremlin-medal.png
new cdbfb74972 Fixed up some language in the upgrade docs CTR
add 62b3c1902b Fixed up formatting CTR
add 8f9edf31a3 Merge branch '3.5-dev' into 3.6-dev
new c456e943ce Merge branch '3.6-dev'
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
docs/src/upgrade/release-3.5.x.asciidoc | 6 ++-
docs/src/upgrade/release-3.7.x.asciidoc | 78 +++++++++++++++++++++------------
2 files changed, 53 insertions(+), 31 deletions(-)
[tinkerpop] 02/02: Merge branch '3.6-dev'
Posted by sp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit c456e943cedc655268ecba060abba33aae6176b0
Merge: cdbfb74972 8f9edf31a3
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Thu Jul 27 13:20:29 2023 -0400
Merge branch '3.6-dev'
docs/src/upgrade/release-3.5.x.asciidoc | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
[tinkerpop] 01/02: Fixed up some language in the upgrade docs CTR
Posted by sp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit cdbfb749724ff5ee21ad73f565007cdabc8d9a25
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Thu Jul 27 13:18:15 2023 -0400
Fixed up some language in the upgrade docs CTR
---
docs/src/upgrade/release-3.7.x.asciidoc | 78 +++++++++++++++++++++------------
1 file changed, 49 insertions(+), 29 deletions(-)
diff --git a/docs/src/upgrade/release-3.7.x.asciidoc b/docs/src/upgrade/release-3.7.x.asciidoc
index a56fa02dcf..83e7f1c51d 100644
--- a/docs/src/upgrade/release-3.7.x.asciidoc
+++ b/docs/src/upgrade/release-3.7.x.asciidoc
@@ -31,10 +31,11 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.7.0/CHANGELOG.asc
==== String concat() Step
-Previously string manipulations were only possible using closures, which may or may not be supported by different providers.
-Here we introduce the `concat()`-step as the beginning of a series of string manipulation steps aimed to replace the usage of closure.
+String manipulations in Gremlin queries were only possible using closures, which may or may not be supported by
+different providers. In 3.7.0, we introduce the `concat()`-step as the beginning of a series of string manipulation steps
+aimed to replace the usage of closure.
-Previously in 3.6, one needs to use closure if one wishes to add a new vertex with a label like an existing vertex but
+The following example demonstrates the use of a closure to add a new vertex with a label like an existing vertex but
with some prefix attached:
[source,text]
@@ -45,7 +46,7 @@ gremlin> g.V(13).label()
==>prefix_person
----
-As of this version, `concat()` can be used to operate necessary string concatenations in the Gremlin language syntax.
+With `concat()` step this operation can be performed with standard Gremlin syntax:
[source,text]
----
@@ -55,6 +56,8 @@ gremlin> g.V(14).label()
==>prefix_person
----
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-2672[TINKERPOP-2672]
+
==== union() Start Step
The `union()`-step could only be used mid-traversal after a start step. The typical workaround for this issue was to
@@ -168,7 +171,7 @@ been abandoned and is only compatible with Neo4j version 3.4, which reached end
As of this version, we are introducing the transactional TinkerGraph, TinkerTransactionGraph, which is TinkerGraph with
transaction capabilities. The TinkerTransactionGraph has `read committed` isolation level, which is the same as the
-Neo4jGraph provided in `neo4j-gremlin`. Only ThreadLocal transactions are implemented, therefore embedded graph
+Neo4jGraph provided in `neo4j-gremlin`. Only `ThreadLocal` transactions are implemented, therefore embedded graph
transactions may not be fully supported. These transaction semantics may not fit the use case for some production
scenarios that require strict ACID-like transactions. Therefore, it is recommended that TinkerTransactionGraph be used
as a Graph for test environments where you still require support for transactions.
@@ -280,27 +283,23 @@ and not for production use.
Addition documentation can be found in <<transactions,Transactions>> section.
-
==== Properties on Elements
-===== Introduction
-
-By default properties on `Element` are now returned for OLTP requests. Gremlin Server 3.5 and 3.6 can return properties only in some special cases.
-More history details about serialization of properties can be found in the link:https://lists.apache.org/thread/xltcon4zxnwq4fyw2r2126syyrqm8spy[Stephen's post].
+One of the peculiar aspects of using Gremlin remotely is that if you do something like `v = g.V().next()` you will
+find that the `v`, the `Vertex` object, does not have any properties associated with it, even if the database
+associates some with it. It will be a "reference" only, in that it will only have an `id` and `label`. The reason and
+history for this approach can be found on the link:https://lists.apache.org/thread/xltcon4zxnwq4fyw2r2126syyrqm8spy[dev list].
+While this has been a long-standing way TinkerPop operates, it is a confusing point for new users and often forces
+some inconvenience on folks by requiring them to alter queries to transform graph elements to other forms that can
+carry the property data (e.g. `elementMap()`).
-===== Behavior for OLAP queries
+With this new release, properties are finally available on graph elements for all programming languages and are now
+returned by default for OLTP requests. Gremlin Server 3.5 and 3.6 can return properties only in some special cases.
-Queries still won't return properties on Elements. The main reason for this is performance considerations.
-If you need to get a property, then this can be explicitly configured with `HaltedTraverserStrategy`
+Queries still won't return properties on Elements for OLAP. It deals with references only as it always have
+irrespective of remote or local execution.
-[source,java]
-----
-g.withComputer().withStrategies(HaltedTraverserFactoryStrategy.detached())
-----
-
-===== Output comparison for Gremlin Server 3.5/3.6 and 3.7
-
-Let's take a closer look at a Javascript GLV code example in 3.6 and 3.7:
+Consider the following example of this functionality with Javascript:
[source,javascript]
----
@@ -311,8 +310,8 @@ console.log(JSON.stringify(result.first()));
await client.close();
----
-The result will be different depending on the version of Gremlin Server.
-For 3.5/3.6:
+The result will be different depending on the version of Gremlin Server. For 3.5/3.6:
+
[source,json]
----
{"id":1,"label":"person"}
@@ -326,17 +325,19 @@ For 3.7:
===== Enabling the previous behavior
-The GLVs in 3.5/3.6 will not be able to work correctly with properties on Elements. If you don't need to get properties then you can do one of the following:
+Note that drivers from earlier versions like 3.5 and 3.6 will not be able to retrieve properties on elements. Older
+drivers connecting to 3.7.x servers should disable this functionality server-side in one of two ways:
+
+*Configure Gremlin Server to not return properties* - update Gremlin Server initialization script with
+`ReferenceElementStrategy`. This configuration is essentially the one used in older versions of the server by default.
-* To configure Gremlin Server to not return properties, update Gremlin Server initialization script with `ReferenceElementStrategy`.
-This method is better to use with 3.5/3.6 GLVs.
-For example
[source,groovy]
----
globals << [g : traversal().withEmbedded(graph).withStrategies(ReferenceElementStrategy)]
----
-* Use config per request `with('materializeProperties', 'tokens')`
+*Disable property inclusion per request* - the `materializeProperties` has a `tokens` option for this purpose.
+
[source,csharp]
----
g.With("materializeProperties", "tokens").V(1).Next()
@@ -344,7 +345,23 @@ g.With("materializeProperties", "tokens").V(1).Next()
===== Possible issues
-ReferenceElement-type objects are no longer returned - you get a DetachedElement from remote requests. If you have not been implementing the `Element` interfaces then you will need to update the code to use interfaces like `Vertex` and `Edge`.
+`ReferenceElement`-type objects are no longer returned by the server by default. When upgrading existing code to 3.7.0,
+it is possible that this change could have some impact if you directly declared use of those classes. For example:
+
+[source,java]
+----
+ReferenceVertex v = g.V().next();
+----
+
+would need to be changed to:
+
+[source,java]
+----
+Vertex v = g.V().next();
+----
+
+In other words, it would be best to code to the various structural interfaces like `Vertex` and `Edge` rather than
+specific implementations.
See: link:https://issues.apache.org/jira/browse/TINKERPOP-2824[TINKERPOP-2824]
@@ -427,6 +444,8 @@ either --add-opens or --add-exports certain modules to enable it to work with Ja
serialization library which is used with OLAP. If you use OLTP, then you may not need to add any of these options to
the JVM. The following are only examples used by TinkerPop's automated tests and are placed here for convenience.
+[source,text]
+----
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/sun.nio.cs=ALL-UNNAMED
@@ -437,6 +456,7 @@ the JVM. The following are only examples used by TinkerPop's automated tests and
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
+----
=== Upgrading for Providers