neo4j_server 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +5 -0
  3. data/Rakefile +4 -0
  4. data/bin/neo4j_server +53 -0
  5. data/lib/neo4j_server/java.rb +8 -0
  6. data/lib/neo4j_server/server.rb +96 -0
  7. data/lib/neo4j_server/tasks.rb +18 -0
  8. data/lib/neo4j_server/version.rb +3 -0
  9. data/neo4j/CHANGES.txt +618 -0
  10. data/neo4j/LICENSE.txt +695 -0
  11. data/neo4j/LICENSES.txt +2614 -0
  12. data/neo4j/NOTICE.txt +220 -0
  13. data/neo4j/README.txt +62 -0
  14. data/neo4j/UPGRADE.txt +167 -0
  15. data/neo4j/conf/README.txt +16 -0
  16. data/neo4j/conf/logging.properties +73 -0
  17. data/neo4j/conf/neo4j-http-logging.xml +37 -0
  18. data/neo4j/conf/neo4j-server.properties +85 -0
  19. data/neo4j/conf/neo4j-wrapper.conf +38 -0
  20. data/neo4j/conf/neo4j.properties +30 -0
  21. data/neo4j/conf/windows-wrapper-logging.properties +73 -0
  22. data/neo4j/lib/README.txt +16 -0
  23. data/neo4j/lib/geronimo-jta_1.1_spec-1.1.1.jar +0 -0
  24. data/neo4j/lib/lucene-core-3.5.0.jar +0 -0
  25. data/neo4j/lib/neo4j-cypher-1.8.1.jar +0 -0
  26. data/neo4j/lib/neo4j-graph-algo-1.8.1.jar +0 -0
  27. data/neo4j/lib/neo4j-graph-matching-1.8.1.jar +0 -0
  28. data/neo4j/lib/neo4j-jmx-1.8.1.jar +0 -0
  29. data/neo4j/lib/neo4j-kernel-1.8.1.jar +0 -0
  30. data/neo4j/lib/neo4j-lucene-index-1.8.1.jar +0 -0
  31. data/neo4j/lib/neo4j-shell-1.8.1.jar +0 -0
  32. data/neo4j/lib/neo4j-udc-1.8.1.jar +0 -0
  33. data/neo4j/lib/org.apache.servicemix.bundles.jline-0.9.94_1.jar +0 -0
  34. data/neo4j/lib/scala-library-2.9.1-1.jar +0 -0
  35. data/neo4j/lib/server-api-1.8.1.jar +0 -0
  36. data/neo4j/plugins/README.txt +13 -0
  37. data/neo4j/system/README.txt +9 -0
  38. data/neo4j/system/lib/README.txt +7 -0
  39. data/neo4j/system/lib/antlr-2.7.7.jar +0 -0
  40. data/neo4j/system/lib/asm-3.1.jar +0 -0
  41. data/neo4j/system/lib/asm-analysis-3.2.jar +0 -0
  42. data/neo4j/system/lib/asm-commons-3.2.jar +0 -0
  43. data/neo4j/system/lib/asm-tree-3.2.jar +0 -0
  44. data/neo4j/system/lib/asm-util-3.2.jar +0 -0
  45. data/neo4j/system/lib/bcprov-jdk16-140.jar +0 -0
  46. data/neo4j/system/lib/blueprints-core-1.2.jar +0 -0
  47. data/neo4j/system/lib/blueprints-neo4j-graph-1.2.jar +0 -0
  48. data/neo4j/system/lib/commons-beanutils-1.8.0.jar +0 -0
  49. data/neo4j/system/lib/commons-beanutils-core-1.8.0.jar +0 -0
  50. data/neo4j/system/lib/commons-collections-3.2.1.jar +0 -0
  51. data/neo4j/system/lib/commons-configuration-1.6.jar +0 -0
  52. data/neo4j/system/lib/commons-digester-1.8.1.jar +0 -0
  53. data/neo4j/system/lib/commons-io-1.4.jar +0 -0
  54. data/neo4j/system/lib/commons-lang-2.4.jar +0 -0
  55. data/neo4j/system/lib/commons-logging-1.1.1.jar +0 -0
  56. data/neo4j/system/lib/concurrentlinkedhashmap-lru-1.3.1.jar +0 -0
  57. data/neo4j/system/lib/gremlin-groovy-1.5.jar +0 -0
  58. data/neo4j/system/lib/gremlin-java-1.5.jar +0 -0
  59. data/neo4j/system/lib/groovy-1.8.5.jar +0 -0
  60. data/neo4j/system/lib/jackson-core-asl-1.9.7.jar +0 -0
  61. data/neo4j/system/lib/jackson-jaxrs-1.9.7.jar +0 -0
  62. data/neo4j/system/lib/jackson-mapper-asl-1.9.7.jar +0 -0
  63. data/neo4j/system/lib/janino-2.5.10.jar +0 -0
  64. data/neo4j/system/lib/jansi-1.5.jar +0 -0
  65. data/neo4j/system/lib/jcl-over-slf4j-1.6.1.jar +0 -0
  66. data/neo4j/system/lib/jersey-core-1.9.jar +0 -0
  67. data/neo4j/system/lib/jersey-multipart-1.9.jar +0 -0
  68. data/neo4j/system/lib/jersey-server-1.9.jar +0 -0
  69. data/neo4j/system/lib/jettison-1.3.jar +0 -0
  70. data/neo4j/system/lib/jetty-6.1.25.jar +0 -0
  71. data/neo4j/system/lib/jetty-util-6.1.25.jar +0 -0
  72. data/neo4j/system/lib/jsr311-api-1.1.2.r612.jar +0 -0
  73. data/neo4j/system/lib/logback-access-0.9.30.jar +0 -0
  74. data/neo4j/system/lib/logback-classic-0.9.30.jar +0 -0
  75. data/neo4j/system/lib/logback-core-0.9.30.jar +0 -0
  76. data/neo4j/system/lib/mimepull-1.6.jar +0 -0
  77. data/neo4j/system/lib/neo4j-cypher-plugin-1.8.1.jar +0 -0
  78. data/neo4j/system/lib/neo4j-gremlin-plugin-1.8.1.jar +0 -0
  79. data/neo4j/system/lib/neo4j-server-1.8.1-static-web.jar +0 -0
  80. data/neo4j/system/lib/neo4j-server-1.8.1.jar +0 -0
  81. data/neo4j/system/lib/pipes-1.0.jar +0 -0
  82. data/neo4j/system/lib/rrd4j-2.0.7.jar +0 -0
  83. data/neo4j/system/lib/servlet-api-2.5-20081211.jar +0 -0
  84. data/neo4j/system/lib/slf4j-api-1.6.2.jar +0 -0
  85. data/neo4j/system/lib/stax-api-1.0.1.jar +0 -0
  86. data/neo4j_server.gemspec +32 -0
  87. metadata +138 -0
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Assay Depot
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,5 @@
1
+ = Neo4j::Server
2
+
3
+ Neo4j::Server is a packaged distribution of the Neo4j java server.
4
+
5
+ This Gem is inspired by the sunspot_solr package.
data/Rakefile ADDED
@@ -0,0 +1,4 @@
1
+ require 'pathname'
2
+ ROOT = Pathname.new(File.dirname(__FILE__))
3
+
4
+ load './lib/neo4j_server/tasks.rb'
data/bin/neo4j_server ADDED
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env ruby
2
+ # Not sure if the following two lines should be here.
3
+ lib = File.join(File.dirname(__FILE__), '..', 'lib')
4
+ $:.unshift(lib) unless $:.include?(lib)
5
+
6
+ begin
7
+ require 'tmpdir'
8
+ require 'optparse'
9
+ require 'pathname'
10
+ require File.join(lib, 'neo4j_server', 'server')
11
+ rescue LoadError => e
12
+ if require 'rubygems'
13
+ retry
14
+ else
15
+ raise(e)
16
+ end
17
+ end
18
+
19
+ server = Neo4jServer::Server.new
20
+ server.data_dir = Pathname.new(Dir.tmpdir).join("neo4j_data")
21
+ server.log_dir = server.data_dir.join("log")
22
+ server.neo4j_home = Pathname.new(lib).join("../neo4j")
23
+ server.port = '7474'
24
+
25
+
26
+ opts = OptionParser.new do |opts|
27
+ opts.banner = "Usage: neo4j_server run [options]"
28
+
29
+ opts.on '-p', '--port=PORT', 'Port on which to run Neo4j (default 7474)' do |p|
30
+ server.port = p
31
+ end
32
+
33
+ opts.on '-h', '--home=HOME_PATH', 'Neo4j home directory' do |h|
34
+ server.neo4j_home = Pathname.new(h)
35
+ end
36
+
37
+ opts.on '-d', '--data_dir=DATA_PATH', "Neo4j data directory" do |d|
38
+ server.data_dir = Pathname.new(d)
39
+ end
40
+ end
41
+
42
+ opts.parse!
43
+
44
+ begin
45
+ case ARGV[0]
46
+ when 'run'
47
+ server.run
48
+ else
49
+ abort(opts.help)
50
+ end
51
+ rescue Neo4jServer::Server::ServerError => e
52
+ abort(e.message)
53
+ end
@@ -0,0 +1,8 @@
1
+ module Neo4jServer
2
+ module Java
3
+ def self.installed?
4
+ `java -version &> /dev/null`
5
+ $?.success?
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,96 @@
1
+ # This code is heavily influenced by sunspot_solr's server.rb
2
+
3
+ require 'tempfile'
4
+ require 'neo4j_server/java'
5
+
6
+ module Neo4jServer
7
+ class Server
8
+ ServerError = Class.new(RuntimeError)
9
+ JavaMissing = Class.new(ServerError)
10
+
11
+ attr_accessor :data_dir, :log_dir, :neo4j_home, :port
12
+
13
+ def initialize(*args)
14
+ ensure_java_installed
15
+ super(*args)
16
+ end
17
+
18
+ def run
19
+ make_data_dir
20
+ make_log_dir
21
+
22
+ cmd = ["java"]
23
+ cmd << "-server"
24
+ cmd << "-cp '#{jars.join(':')}'"
25
+ cmd << "-Dlog4j.configuration=file:#{log4j_config_path}"
26
+ cmd << "-Dorg.neo4j.server.properties=\"#{neo4j_server_properties_path}\""
27
+ # cmd << "-Djava.util.logging.config.file=\"#{logging_config_path}\""
28
+ cmd << "-Dneo4j.home=\"#{@neo4j_home}\""
29
+ cmd << "-Dneo4j.instance=\"#{@neo4j_home}\""
30
+ cmd << "-Duser.home=\"#{@neo4j_home}\""
31
+ cmd << "org.neo4j.server.Bootstrapper"
32
+
33
+ exec(cmd.join(" "))
34
+ end
35
+
36
+ def logging_config_path
37
+ File.expand_path(@neo4j_home.join("conf/loggging.properties"))
38
+ # return @logging_config_path if defined?(@logging_config_path)
39
+ # @logging_config_path =
40
+ # if log_file
41
+ # logging_config = Tempfile.new('logging.properties')
42
+ # logging_config.puts("handlers = java.util.logging.FileHandler")
43
+ # # logging_config.puts("java.util.logging.FileHandler.level = #{'INFO'}")
44
+ # # logging_config.puts("java.util.logging.FileHandler.pattern = #{log_file}")
45
+ # logging_config.puts("java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter")
46
+ # logging_config.flush
47
+ # logging_config.close
48
+ # logging_config.path
49
+ # end
50
+ end
51
+
52
+ private
53
+ def log_file
54
+ @log_dir.join("neo4j.log")
55
+ end
56
+
57
+ def ensure_java_installed
58
+ unless defined?(@java_installed)
59
+ @java_installed = Neo4jServer::Java.installed?
60
+ unless @java_installed
61
+ raise JavaMissing.new("You need a Java Runtime Environment to run the Solr server")
62
+ end
63
+ end
64
+ @java_installed
65
+ end
66
+
67
+ def jars
68
+ lib_jars = Dir.glob(@neo4j_home.join("lib/*.jar"))
69
+ sys_jars = Dir.glob(@neo4j_home.join("system/lib/*.jar"))
70
+ plugin_jars = Dir.glob(@neo4j_home.join("plugins/*.jar"))
71
+ coordinator_jars = Dir.glob(@neo4j_home.join("system/coordinator/lib/*.jar"))
72
+
73
+ [lib_jars,sys_jars,plugin_jars,coordinator_jars].flatten.collect{|f| File.expand_path(f)}
74
+ end
75
+
76
+ def neo4j_instance
77
+ @neo4j_home
78
+ end
79
+
80
+ def log4j_config_path
81
+ File.expand_path(@neo4j_home.join("conf/log4j.properties"))
82
+ end
83
+
84
+ def neo4j_server_properties_path
85
+ File.expand_path(@neo4j_home.join("conf/neo4j-server.properties"))
86
+ end
87
+
88
+ def make_data_dir
89
+ FileUtils.mkdir_p(@data_dir)
90
+ end
91
+
92
+ def make_log_dir
93
+ FileUtils.mkdir_p(@log_dir)
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,18 @@
1
+ require 'fileutils'
2
+
3
+ desc 'Update the vendored neo4j'
4
+ task :update, [:path] do |t,args|
5
+ path = Pathname.new(args[:path])
6
+ raise ArgumentError.new("Expecting path to a tar.gz") unless path.basename.to_s =~ /tar\.gz/
7
+
8
+ puts "tar -xzf #{args[:path]} -C #{ROOT}"
9
+ system("tar -xzf #{args[:path]} -C #{ROOT}")
10
+
11
+ unpacked_folder_name = path.basename.to_s.gsub(/\.tar\.gz/,'').gsub("-unix","")
12
+
13
+ FileUtils.mv ROOT.join(unpacked_folder_name), ROOT.join("neo4j")
14
+ FileUtils.rm_rf ROOT.join("neo4j/data")
15
+ FileUtils.rm_rf ROOT.join("neo4j/examples")
16
+ FileUtils.rm_rf ROOT.join("neo4j/doc")
17
+ FileUtils.rm_rf ROOT.join("neo4j/bin")
18
+ end
@@ -0,0 +1,3 @@
1
+ module Neo4jServer
2
+ VERSION = "1.8.1"
3
+ end
data/neo4j/CHANGES.txt ADDED
@@ -0,0 +1,618 @@
1
+ For Release Notes, see http://neo4j.org/release-notes
2
+
3
+ 1.8.1 (2012-12-13)
4
+ --------------------
5
+ Java 7 Support:
6
+ o We now compile and test with Java 7 on both Oracle JVM and OpenJDK (however, we still only officially support Sun JDK6).
7
+ o JVM compatibility checking will warn when you use incompatible JVMs or incompatible Java versions.
8
+
9
+ Cypher:
10
+ o Numerous bug fixes:
11
+ + Fixes #304, bug that stops renaming of identifiers that are used as key expressions when aggregating
12
+ + Fix for problems when using patterns with multiple unnamed nodes
13
+ + Fixes problems when doing ORDER BY ... LIMIT x
14
+ + Fixed problem with dependencies inside foreach statements being reported wrongly
15
+ + Fixes #336 - Patterns that re-use a pattern node can produce non-existing matches
16
+ o Integration with Bidirectional Traverser Framework
17
+ o Improvements to memory consumption
18
+
19
+ Graph Algorithms:
20
+ o Fixed issue with bi-directional shortest path
21
+
22
+ 1.8.GA (2012-09-24)
23
+ --------------------
24
+ Kernel:
25
+ o Fix for issue where, under some conditions, an incorrect number of relationships were returned.
26
+
27
+ Server:
28
+ o Fixed webadmin bug where clicking save in the visualization profiles did not change the page
29
+
30
+ Cypher:
31
+ o Added synchronization to avoid race conditions in the Cypher parser
32
+
33
+ 1.8.RC1 (2012-09-05)
34
+ --------------------
35
+ Kernel:
36
+ o Removed contention around allocating and moving persistence windows so that a thread won't need to await
37
+ another thread doing this refresh, instead just continue knowing that the windows will be optimally
38
+ placed in a very near future.
39
+ o Removed contention around translating a key (as String) into the ID by using copy-on-write map instead
40
+ of a concurrent hash map. Used in property key as well as relationship type translation.
41
+ o Fix for Node/Relationship#getPropertyValues() sometimes returning null values from the iterator.
42
+
43
+ Server:
44
+ o Upgraded Jackson JAXRS to version 1.9.7
45
+ o Keeping the Cypher execution engine between calls makes it possible to re-use execution plans
46
+ o added User-Agent header tracking to udc to determine rest-driver usage
47
+
48
+ Cypher:
49
+ o Removed the /../ literal for regular expressions. Now a normal string literal is used instead
50
+ o Concatenation handles types better
51
+ o Changed how the graph-matching module is used, to make it safe for concurrent use
52
+ o Better type error messages
53
+ o Renamed iterable to collection
54
+ o Fixed #795: so that WITH keeps parameters also for empty aggregation results
55
+ o Fixed #772: Creating nodes/relationships goes before SET, so SET can run on already created elements
56
+ o Added error when using != instead of <>
57
+ o Fixed #787: Issue when comparing array properties with literal collections
58
+ o Fixed #751: Better error message for some type errors
59
+ o Fixed #818: Problem where properties could only have scalar values (they can be arrays as well)
60
+ o Fixed #834: Gives relevant syntax exception when properties are entered in MATCH
61
+
62
+ 1.8.M07 (2012-08-08)
63
+ --------------------
64
+ Kernel:
65
+ o Traversal framework backwards compatibility
66
+ + Cleaned up any breaking changes
67
+ + Removed Expander#addFilter
68
+ o Kernel JMX bean instance identifier is now reused and can optionally be set explicitly via forced_kernel_id config setting
69
+
70
+ Server:
71
+ o Consoles in webadmin can now be disabled.
72
+
73
+ Cypher:
74
+ o Added escape characters to string literals
75
+ o Renamed `RELATE` to `CREATE UNIQUE`
76
+
77
+ UDC:
78
+ o Added edition information (community, advanced, enterprise)
79
+ o Added a cluster-name hash so that stores originating from the same cluster can be aggregated
80
+ o Fixed release version and revision
81
+ o Changed precedence of database configuration over internal udc configuration
82
+ o Added distribution information (dpkg, rpm, unknown)
83
+
84
+ 1.8.M06 (2012-07-06)
85
+ --------------------
86
+ Kernel:
87
+ o Deprecated AbstractGraphDatabase.transactionRunning()
88
+ o Changed synchronization of applying transactions to prevent a deadlock scenario
89
+ o Original cause can be extracted from a transaction RollbackException
90
+
91
+ Server:
92
+ o Fixed issue that stopped the server from starting without the UDC-jars.
93
+
94
+ Cypher:
95
+ o Fixes problem when graph elements are deleted multiple times in the same query
96
+ o Fixes #625: Values passed through WITH have the wrong type
97
+ o Fixes #654: Some paths are returned the wrong way
98
+
99
+ 1.8.M05 (2012-06-25)
100
+ --------------------
101
+ Kernel:
102
+ o Configurable amount of logical logs to keep, by for example number of days or size on disk.
103
+ keep_logical_logs configuration is extended to support values such as: "10 days", "200M size" a.s.o.
104
+ Regardless of configuration there will always be at least the latest non-empty logical log left.
105
+ o Reduced synchronization while memory mapping files, leading to increased multithreaded performance
106
+
107
+ Server:
108
+ o Added support for multi line Cypher queries in webadmin browser
109
+
110
+ Lucene-index:
111
+ o Removed lucene_writers_cache_size and have lucene_searcher_cache_size decide for both, since
112
+ it's doesn't make sense to have a writer w/o a searcher and isn't possible to have a searcher
113
+ w/o its writer.
114
+ o Loosened contention regarding getting index searchers for querying.
115
+
116
+ Cypher:
117
+ o CREATE and RELATE can now introduce path identifiers
118
+ o String literals can now contain escape characters
119
+ o Fixes #600: Double optional with no matching relationships returns too many rows
120
+ o Fixes #613: Missing dependencies not reported correctly for queries with RELATE/SET/DELETE
121
+ o Fixes around optional paths
122
+
123
+ 1.8.M04 (2012-06-07)
124
+ --------------------
125
+ Kernel:
126
+ o Additions to the traversal framework:
127
+ + Bidirectional traversals (with BidirectionalTraversalDescription). AllPaths/AllSimplePaths
128
+ uses this feature and are now faster due to less relationships being traversed.
129
+ + Multiple start nodes (as well as multiple end nodes for bidirectional traversals).
130
+ + PathExpander (RelationshipExpander for Paths) which has the full Path passed in instead of
131
+ just the end node of the path. It can also see and modify a user defined traversal branch state.
132
+ + Metadata about the traversal, for the time being: number of relationships traversal and
133
+ number paths returned.
134
+ + Added Path#reverseNodes() and Path#reverseRelationships which gives all nodes/relationships in
135
+ a path in reverse order (starting from the end node going back to the start node). More relevant
136
+ in many scenarios as well as allowing for a more efficient implementation.
137
+ + Sorting of traversal results, specify with TraversalDescription#sort(Comparable).
138
+ + Some measure to reduce memory consumption and garbage generation during traversals.
139
+
140
+ Graph-algo:
141
+ o AllPaths/AllSimplePaths uses the new bidirectional traversal feature in the traversal framework.
142
+ Less relationships now needs to be traversed to find the requested paths.
143
+ o Added an implementation of the shortest path algorithm with the bidirectional traversal feature.
144
+
145
+ Cypher:
146
+ o CREATE now accepts full paths and not only single nodes and relationships
147
+ o Path patterns can now be used as expressions and as predicates
148
+ o Fixes bug where RELATE fails to compare array properties
149
+ o Fixes #573: Arithmetics operations have wrong type
150
+ o Fixes #567: Parameter maps coming through REST are not parsed correctly
151
+ o Fixes #563: COUNT(*) does not return 0 for empty result
152
+ o Fixes #561: RELATE doesn't work as expected with map-parameters
153
+
154
+ 1.8.M03 (2012-05-24)
155
+ --------------------
156
+ Kernel:
157
+ o Changed array map to CHM in property index manager, better multithreaded performance
158
+ Shell:
159
+ o Added BEGIN TRANSACTION/COMMIT/ROLLBACK
160
+ o Sessions now live on the server side instead of on the client, which means that not just
161
+ serializable values can be set there. Paves the way for Cypher making use of it.
162
+ Server:
163
+ o keep_logical_logs is now respected if set to false - default is still true
164
+ Cypher:
165
+ o Added RELATE
166
+ o Changed the CREATE syntax, so it looks more like RELATE
167
+ o Fixes #506: delete head(rels) doesn't work
168
+ o Fixes #508: length function on array properties doesn't work
169
+ o Fixes #512: start n=node(*) match n-[r?]->() delete n,r not working
170
+ o Fixes #514: Extract doesn't work with array properties
171
+ o Fixes #523: String literals not parsed correctly in CREATE statement
172
+ o Fixes #526: cypher filter in return clause
173
+ o Fixes #536: SQRT only returns an integer
174
+ o Fixes #543: Appending elements to collections
175
+
176
+ 1.8.M02 (2012-05-11)
177
+ --------------------
178
+ Kernel:
179
+ o Optimized short string and short array encoding algorithms
180
+ o Fixed problem with SpringTransactionManager during HA master switch
181
+ Shell:
182
+ o Shell can now be exited with Ctrl-D
183
+ Server:
184
+ o Support for streaming results for http batch operations.
185
+ o Proper encoding of Index URI key/value pairs.
186
+ o Fixed Swedish character problem in webadmin string properties.
187
+ o Webadmin chart labels have nice formatting now.
188
+ Cypher:
189
+ o Added the possibility to create nodes from an iterable of maps
190
+
191
+ 1.8.M01 (2012-04-26)
192
+ --------------------
193
+ o Byte array properties are handled in a more optimized way, increasing performance by a couple of times at least.
194
+ o Fix for an issue where update of cache when creating a relationship on a very dense node would take longer and longer time.
195
+ o Fix for an issue where a recovery would sometimes fail with it reporting that a start record already had been injected.
196
+ o Added "create" shell app for Cypher queries only doing creations.
197
+ Server:
198
+ o Added streaming to REST API. All representation implementations have been adapted to produce their data lazily.
199
+ o Added HTTP logging.
200
+ Cypher:
201
+ o Added the possibility to return all graph elements using RETURN *
202
+ o Added CREATE, SET, DELETE, FOREACH, WITH
203
+ o Fixes issue #432, #446
204
+
205
+ 1.7 (2012-04-18)
206
+ ----------------
207
+ o Moved BatchInserter to a different package.
208
+ o Fixed 'Record Not In Use' issue with creating and setting Node properties with the BatchInserter.
209
+ Cypher:
210
+ o Added the possibility to use multiple relationship types on patterns
211
+ o Fixed bug when aggregation is used in ORDER BY and not listed in the RETURN clause
212
+ Server:
213
+ o Added scored index results to REST API
214
+ o Improvements to installation docs for the server
215
+ o Added auto index management API to REST, fixing #399
216
+ o Fixed unicode issues in batch operations API in windows and OS X
217
+ o Server now disallows creating indexes with empty names. Closes #311
218
+ o Attempting to delete a non-existing index now returns 404, closes #349
219
+ UDC:
220
+ o Modified UDC to run one thread per DB, and to shut down background thread on unload. Closes #279
221
+ o UDC now sends the machines MAC adress to Neo Technology, to separate between instances behind firewalls
222
+ o UDC now sends database registration ID to Neo Technology, if one is available
223
+ o UDC now sends "tags" to Neo Technology, these contain information about the type of deployment, such as language, web-container, app-container, spring, ejb
224
+
225
+ 1.7.M03 (2012-04-11)
226
+ --------------------
227
+ o Removed old OSGi support in favor of the new and better one.
228
+ o Added possibility to use logback for logging.
229
+ o Renamed array cache to GC resistant cache (GCR) and moved it to enterprise.
230
+ o Fixed problem with GCR cache that could cause it to calculate incorrect size.
231
+ o Fixed problem with closing of messages.log on windows
232
+
233
+ 1.7.M02 (2012-03-26)
234
+ --------------------
235
+ o Added lock free atomic array cache that avoids triggering full GCs.
236
+ o Added GC monitor that will keep track on how much the JVM blocks application threads.
237
+ o Fix for an issue where upgrading indices with an unclean shutdown.
238
+
239
+ 1.7.M01 (2012-03-12)
240
+ --------------------
241
+ o Fixed bug in PropertyStore that during recovery would throw exception if the last record was incomplete.
242
+ o Fixes to transaction log start position caching which mitigates a performance issue and fixes a caching issue during rotation.
243
+ o Fixed a couple of issue around copying incomplete transaction to new log during a log rotation.
244
+ o Fixed a property cache poisoning bug and some stale references leaking.
245
+ o Fixed a data race issue between threads removing the same property while the node is evicted from cache.
246
+ o Fixed an issue where a property record in the logical log was missing its owner.
247
+ o Log messages in messages.log are now printed in UTC time zone so that it's the same across servers.
248
+ o Fix for an issue where a full rebuild of an id generator (rebuild_idgenerators_fast=false) could result
249
+ in exception when adding free ids.
250
+ o Fix for issue which would close an id generator as clean if a startup failed at the wrong time, which would make
251
+ the id generator diverge from the store it held ids for and possible truncate that store file the next clean shutdown.
252
+ Indexing:
253
+ o Added LowerCaseKeywordAnalyzer and a clear test for it which shows how to configure a case-insensitive exact index.
254
+ Cypher:
255
+ o Added literal collections and the IN predicate
256
+ o Added HEAD, TAIL, LAST and FILTER
257
+ o Added ! so that missing property can evaluate to false
258
+ o BREAKING CHANGE: To check whether a property exists on a node, use the HAS(...) function
259
+ o Arithmetic & string concatenation
260
+ o An identifier can now be assigned all the nodes/rels in the graph - START a=node(*)
261
+ o Predicates can be specified inside of a pattern relationship description
262
+ Server:
263
+ o Fixed a NPE in guarded database for the result of Index#putIfAbsent.
264
+ o Added SSL support in the server.
265
+ o SecurityRule implementations can now use simple wildcards to allow whole sub paths of URIs to be covered by the rule.
266
+ o Added an "order" parameter to index REST queries to control result ordering.
267
+ Shell:
268
+ o dbinfo command now able to print simple values as well as arrays and compound values as JSON output.
269
+ o A shell server which isn't remotely avaiable doesn't touch RMI, neither does a client which connects
270
+ to a server within the same JVM. This makes for less RMI garbage when forgetting to call shutdown().
271
+ o Fixes problem with eval command in that it couldn't execute a single-line command, which made it impossible
272
+ to do ./shell -c 'eval ...' from outside
273
+ UDC:
274
+ o Added MAC address to pings.
275
+
276
+
277
+ 1.6 (2012-01-19)
278
+ ----------------
279
+ o Fixed a ConcurrentModificationException problem in lucene index when rotating logs and listing store files.
280
+ o Fixes issues #173, #118, #138, #103
281
+ o Minor performance optimization in property handling code.
282
+ Cypher:
283
+ o Lots of changes to the parsers error reporting
284
+ o Queries can now be pre-pended with which parser version to use
285
+ o Database configuration can now change which version of the parser to use as default
286
+
287
+ 1.6.M03 (2012-01-12)
288
+ --------------------
289
+ o Added a different aggregation logic. Makes aggregating on the same columns as sorting much faster
290
+ o Made it possible to query on array properties
291
+ o Fixed bugs #157,#140,#168,#170 and a bug which prevented a node sent in as a parameter unable to be returned in a result
292
+ o Added means of introspecting locks taken by the LockManager.
293
+ o Added a diagnostics API.
294
+ o Added Index#putIfAbsent which ensures uniquely put key/value pair for an entity.
295
+ o Added UniqueFactory which gets or creates entities uniquely using Index#putIfAbsent
296
+ o Fixed an issue with upgrading an 1.5.M02 store where a "store version" record wouldn't be added and which caused problems after non-clean shutdown.
297
+ o Fixed an issue where sometimes dual start entries for a transaction would be added in the logical log.
298
+ o Upgraded to Lucene version 3.5.
299
+ o Added request timeout, controlled with org.neo4j.server.webserver.limit.executiontime (disabled by default).
300
+ Request header (max-execution-time) can shorten it if specified.
301
+ o Fixed issues #113, #166, #172
302
+ o Allow overriding of server base url for when test browser needs to access server via a different hostname from the bind address.
303
+ o Exposes get-or-create-uniquely via REST in ex. POST /index/node/<name>?unique {...}
304
+ o Added shell command mknode for creating new nodes w/o creating a relationship.
305
+
306
+ 1.6.M02 (2011-12-16)
307
+ --------------------
308
+ o [server] Webadmin data browser now supports cypher queries
309
+ o [server] DEPRECATION: Cypher execution is now part of the core REST API, the cypher plugin is deprecated.
310
+ o [server] Updated to gremlin 1.4
311
+ o [server] Fixed bug in how auto indexes are represented
312
+ o [server] Max request execution time can now be limited
313
+ o [server] Hypermedia URLs returned by the server now set their host based on the HTTP host header
314
+ o [kernel] Lower memory usage of ImpermanentGraphDatabase.
315
+ o [kernel] Abstracted stores that stores id/name pairs into AbstractNameStore/AbstractNameRecord and removed lots of duplicated code.
316
+ o [kernel] Fixed a race condition in the property cache which cuold poison the cache.
317
+ o [kernel] Fixed an issue where a JVM crash in the wrong place would make the next startup rename the current logical log without
318
+ incrementing the logVersion, making the next log rename fail.
319
+ o [kernel] Start records in the logical log aren't written until the transaction starts preparing/committing. This fixes an issue
320
+ with the logical log not being rotated sometimes.
321
+ o [kernel] Added AbstractGraphDatabase#tx() which returns a TransactionBuilder possible of configuring the transaction to be "unforced"
322
+ meaning that logical logs won't be forced when committing. Means better performance for small non-critical transactions.
323
+ o [kernel] Reduced number of proxy object instantiation and node record loading in general.
324
+ o [kernel] Added a wrapping graphdb abstraction, which makes instances survive even if the underlying db restarts.
325
+ o [kernel] Detached LogExtractor from XaLogicaLog so that it can be used without having a db running.
326
+ o [kernel] Added an API for progress indication. With a default implementation that prints dots (every 0.5%) and percentages (every 10%) to a PrintStream.
327
+ o [cypher] Added allShortestPaths
328
+ o [cypher] Added COALESCE
329
+ o [cypher] Added column aliasing with AS
330
+ o [cypher] Variable length relationships can now introduce a rel-iterable
331
+ o [cypher] BREAKING CHANGE: Changed the syntax for iterable predicated ALL/NONE/ANY/SINGLE to use WHERE instead of a colon
332
+ o [cypher] BREAKING CHANGE: ExecutionResult is now a read-once, forward only iterator.
333
+ o [cypher] Fixed problems with optional graph elements
334
+
335
+
336
+ 1.6.M01 (2011-11-24)
337
+ --------------------
338
+ o ImpermantentGraphDatabase now uses purely in-memory structures for speed during tests. It's done on a FileChannel level
339
+ so that every other aspect of the database is intact, just that the bytes end up in ByteBuffers instead of files.
340
+ o Fixed an issue with evaluators not executing correctly for the start node of a traversal.
341
+ o Fixed an issue with BufferOverflowException thrown sometimes during extraction of prepared transactions.
342
+ o Added graph properties, i.e. properties that belongs to the graph itself as opposed to a specific node or relationship.
343
+ Useful for extensions which would like to store configuration and what not.
344
+ o Better multi-line support in shell, as well as case insensitive app names.
345
+ o GraphDatabaseService#getAllNodes and #getRelationshipTypes @Deprecated and moved to GlobalGraphOperations class,
346
+ where also #getAllRelationships is implemented.
347
+ o Added LRU cache for open indexes so that a limit can be set. Thanks vivekprahlad (github id) for the patch.
348
+ o When using ImpermanentGraphDatabase RAMDirectory is used instead of FSDirectory. Useful for speed during testing.
349
+ o Added a LowerCaseKeywordAnalyzer to use for having an exact case-insensitive index.
350
+ o Cypher console in webadmin is now a Neo4j Shell console with the exact same Cypher support included.
351
+ o More documentation and examples.
352
+ o Made zero length (a single node) as well as optional paths in Cypher possible
353
+ o Cypher Skip, limit and regular expressions can now be parameterized
354
+ o Column order in Cypher output is now preserved
355
+ o Cypher Distinct and order by can now be used at the same time
356
+ o Cypher Execution plans can now be pretty printed
357
+ o Solved a bug when using multiple regular expressions in the same query
358
+ o Added the extract function in Cypher
359
+
360
+ 1.5 (2011-10-18)
361
+ ----------------
362
+ o More useful logging to messages.log to help investigating problems.
363
+ o Fixed some issues with detection of version and the need to migrate a store.
364
+ o In webadmin: visualization adds nodes/relationships to the view for each search and search is performed with CTRL+ENTER.
365
+ o Added DISTINCT to all aggregate functions in Cypher.
366
+
367
+ 1.5.M02 (2011-10-10)
368
+ --------------------
369
+ o [STORE FORMAT CHANGE] New layout of the property store(s) which results in roughly a 30% reduction in size on disk as well as fewer I/O read operations for reading properties.
370
+ o Significant performance improvements for extracting transactions from logical logs.
371
+ o Lots of new Cypher features, f.ex: path functions, parameters, shortest path function.
372
+ o Icons in the visualization in webadmin and added a standalone webadmin mode.
373
+ o REST batch API has reduced memory overhead and more appropriate response codes in case of failure.
374
+ o Adding to index via REST has changed to have the value in the JSON body.
375
+ o Added simple security and authorization hooks and configuration in the server.
376
+
377
+ 1.5.M01 (2011-08-31)
378
+ --------------------
379
+ o Fixed file lock issues on an open database which could cause them to be released, making the database vulnerable.
380
+ o Fixed several recovery issues which could leave the logical logs in an inconsistent state after a recovery.
381
+ o Fixed some data visibility issue for relationships as well as some issues with committing relationships to NodeImpl.
382
+ o Auto indexing follows tightly with each mutating operation, not per transaction commit.
383
+ o Tighter integration with the manual in a lot of places.
384
+
385
+ 1.4 (2011-06-27)
386
+ ----------------
387
+ o Fix for numerical values not being indexes properly in fulltext index.
388
+ o More shell commands for deleting entities from the graph.
389
+
390
+ 1.4.M04 (2011-06-09)
391
+ --------------------
392
+ o First iteration of the Cypher Query Language included,
393
+ with a section in the manual.
394
+ o Experimental support for batch operations in REST
395
+ o The Neo4j Manual now includes some examples, and the
396
+ section on REST has been extended.
397
+
398
+ 1.4.M01 (2011-04-28)
399
+ --------------------
400
+ o Server logging has been changed, see the Server Configuration chapter in
401
+ the manual for further information.
402
+
403
+ 1.3 (2011-04-11)
404
+ ----------------
405
+ o Neo4j Community now licensed under GPL
406
+ o All known Windows problems in Neo4j fixed.
407
+ o rewritten Webadmin interface with graph visualization support
408
+ o Short string support in kernel for better
409
+ o 256 Billion database primitives
410
+ o support for Gremlin 0.9 and related Tinkerpop projects
411
+ o Better JMX and monitoring support (Neo4j Advanced)
412
+ o New backup solution with support for both incremental and full online backup (Neo4j Enterprise)
413
+
414
+ 1.3.M05 (2011-03-24)
415
+ --------------------
416
+ o New look and feel of the webadmin
417
+ o New visual data browser
418
+ o Updated to Gremlin 0.8
419
+ o Added docs for server plugin initialization.
420
+
421
+ 1.3.M04 (2011-03-10)
422
+ --------------------
423
+ o All manpages are included in the manual.
424
+ o Some fixes to be more Windows friendly.
425
+ o Added Dijkstra to the list of graph algorithms to be used when finding paths.
426
+ o Support for advanced index queries through REST.
427
+
428
+ 1.3.M03 (2011-02-24)
429
+ --------------------
430
+
431
+ o Numerous updates to the Webadmin tool to make it more usable and to fix some visual bugs.
432
+ o Removal of the properties service, replaced with a discovery service to allow third-party apps to bind to the server at runtime and discover what services are offered and where.
433
+ o Changed the configuration file format to make it simpler and less error prone (but it is *not*) backwards compatible with earlier versions.
434
+ o Separated out the server plugin API for easier development, making only the only development dependency for server a very thin layer and small jar.
435
+
436
+ 1.3.M02 (2011-02-10)
437
+ --------------------
438
+
439
+ o Gremlin updated to 0.7 and trimmed down to bare bones dependencies.
440
+ o Webadmin minor improvements in Console, Data browser and monitoring.
441
+ o better REST JSON property support in Arrays.
442
+ o server started in High Availability mode.
443
+
444
+ 1.3.M01 (2011-01-27)
445
+ --------------------
446
+
447
+ o Full online backup (no need to copy store files before hand) in HA and general support for requests with unlimited size.
448
+ o A couple of bugs fixed in lucene index.
449
+ o More memory efficient handling of transaction streams (extracting and applying).
450
+ o New 'eval' shell command which lets you execute JavaScript on the database.
451
+
452
+ - Server
453
+ o Ability to start the server in HA mode.
454
+ o Excludes the neo4j-index component (not used anyhow) to enable HA mode.
455
+
456
+ - Examples
457
+ o Added an example of an ordered traversal.
458
+
459
+ 1.2 (2010-12-29)
460
+ ----------------
461
+
462
+ - New components:
463
+ o Neo4j Server, including Web Admin
464
+ o Neo4j High Availability
465
+ o Neo4j Graph Database Monitoring and Management tools moved to its own component
466
+ o Neo4j Index API integrated in the GraphDatabaseService API
467
+ o Neo4j Usage Data Collection
468
+
469
+ - Other changes:
470
+ o Additional services (extensions) for the Neo4j kernel are loaded automatically or can be injected in a running instance.
471
+ o Improved memory footprint and read performance.
472
+ o A weak reference cache is now available for high load low latency workloads.
473
+ o The old index API has been deprecated (but still included and have been updated to use Lucene version 3.0.1).
474
+ o There is a new index API based on Lucene supporting multiple indexes both for nodes and relationships.
475
+ o Path algos can now be performed using the shell.
476
+
477
+ o All known bugs have been fixed. For more details see the individual milestone releases below.
478
+
479
+ 1.2.M06 (2010-12-21)
480
+ --------------------
481
+
482
+ - Kernel
483
+ o Fixed an issues with PruneEvaluators getting invoked with the start node as argument.
484
+ PruneEvaluators was never invoked with the start node before the arrival of Evaluator interface.
485
+ o Added logging of recovery completion.
486
+ o Added TransactionData#isDeleted(Node) and #isDeleted(Relationship) and also made
487
+ the collection to hold these a HashSet instead of ArrayList. This allows fast
488
+ lookups for asking if a node/relationship is deleted in a transaction.
489
+ o More flexible caching (can instantiate an arbitrary Cache object).
490
+
491
+ - Shell
492
+ o Fixed a problem where ShellServerExtension assumed the shell was enabled during shutdown, which could result in NPE.
493
+
494
+ - Lucene-index
495
+ o More flexible caching (can instantiate an arbitrary Cache object).
496
+ o Merged the fast-writes branch. Basically it makes committing changes to lucene indexes
497
+ faster and more throughput-friendly for multiple threads. The performance improvement
498
+ for committing lucene transactions shows best for small transactions, but will improve
499
+ all modifying operations to lucene indexes.
500
+ o Fixed bug which could close an IndexSearcher before it was supposed to when
501
+ there was exactly one item in the result set, two or more threads did this at
502
+ the same time as there was another thread doing an update... AND the reading
503
+ threads all called IndexHits#getSingle() on the result.
504
+
505
+ - HA
506
+ o When a new master is chosen, slaves throws away the id allocations they got from the previous master. This fixes a problem where occupied ids where reused.
507
+ o Enabled (and fixed problem with) thread on master which checks for dead slave connections and rolls back those transactions, so that their locks are released.
508
+ This fixes a problem where an HA cluster would seem to freeze up and become unresponsive to write requests.
509
+ o Adding Log4j and Netty license information.
510
+ o Also closes the executor containing the connections.
511
+ o Changed dependency scopes.
512
+ o Shuts down databases after verifying them.
513
+
514
+ - Server
515
+ o Bridge OSGi LogService to server Logger. Bundle log messages and stdout pipe through correctly.
516
+ o Refactoring of functional tests to remove static dependencies. Introduced a server builder to deal with it instead.
517
+ o Can now add performance-tweaking properties to the database hosted by the server. It uses the same neo4j.properties file as the embedded version, but you need to add a property:
518
+ org.neo4j.server.db.tuning.properties into the neo4j-server.properties file.
519
+ o Webadmin: Removed component titles, added save button to data browser, minor change to data browser layout.
520
+ o Webadmin: Minor UI updates, added error message that shows up when server connection is lost.
521
+ o Webadmin: Moved charts into tabbed box, minor UI updates.
522
+ o Fixed an issue with initialization order of things in the server to make sure that RRD is initialized when it is needed.
523
+ o Webadmin: Added proper tab-like styling to chart tabs and scale selectors.
524
+ o Fixed bug in RRD memory usage sampler, making rounding happen at end of calculations, instead of in the midst of.
525
+ o Webadmin: Made 30minutes the default view in charts.
526
+ o Webadmin: Added kernel version to dashboard, fixed bug in chart drawing (was drawing when the charts are not visible under certain conditions).
527
+ o Webadmin: Disallow self relationships in UI, and show error message explaining this.
528
+ o Can now load 3rd party JAX-RS jars from the classpath.
529
+ o Updated static assembly to properly include both webadmin statics and documentation. Documentation now tested and ships properly down to neo4j-standalone.
530
+ o Webadmin: Made the current node show up by default when adding new relations in webadmin.
531
+ o Webadmin: Dashboard shows charts with tabs, and allows switching between charts.
532
+ o Added a basic readme with instructions for building, running, and functional testing.
533
+ o Updating the way to create temporary files to solve the functional test problem where lots of files stick around.
534
+ o re-implemented REST to expose indexing of nodes and relationships (new index API)
535
+ o single path algo works in RestfulGraphDatabase now
536
+ o fixed duplicate paths for delete node or relationship from index
537
+ o Http DELETE requires the proper mediatype to accept
538
+ o All indexes must be created to use them.
539
+ o Added the ability extend the REST API with server plugins.
540
+ o Added back links to the first page in the HTML format.
541
+ o updating to Gremlin 0.6
542
+ o Updated the component site documentation with the new index API.
543
+
544
+ 1.2.M05 (2010-12-02)
545
+ --------------------
546
+
547
+ -New components
548
+ o neo4j-ha, providing high availability
549
+
550
+ -Important changes, server
551
+ o updated to Jersey 1.4
552
+ o integrated index is now supported by the shell
553
+ o new Evaluator interface improves the traversal API
554
+ o support for index hit scores in neo4j-lucene-index
555
+ o index caching support added to BatchInserter
556
+
557
+
558
+ 1.2.M04 (2010-11-18)
559
+ --------------------
560
+
561
+ o added a server packaging as part of neo4j
562
+ o added more configuration options to neo4j-lucene-index
563
+ o generating javadocs for all components automatically to components.neo4j.org/{component-name}
564
+ o Added ImpermanentGraphDatabase to aid in testing
565
+
566
+ 1.2.M03 (2010-11-04)
567
+ --------------------
568
+
569
+ o Monitoring/management over JMX was moved to the new neo4j-management component.
570
+ o Added ability to get the name and configuration of existing integrated indexes.
571
+
572
+ 1.2.M02 (2010-10-21)
573
+ --------------------
574
+
575
+ -New components
576
+ o Lucene index, an implementation of the integrated index framework
577
+ using lucene as backend. Planned to replace current index service.
578
+
579
+ -Important changes
580
+ o Fixed shutdown issue regarding UDC leaving a thread running.
581
+ o A new index framework integrated into the kernel API.
582
+ o Getting relationships is faster due to less cache lookups.
583
+
584
+ 1.2.M01 (2010-10-08)
585
+ --------------------
586
+
587
+ -New components
588
+ o Udc
589
+
590
+ -Important changes
591
+ o Index:
592
+ - Lucene version upgraded to 3.0.1
593
+ o Shell:
594
+ - Apps discoverable with service locator
595
+ - Added read-only mode on server
596
+ - 'host' and 'config' options
597
+ o Graph-algo:
598
+ - Find paths of certain length
599
+ o Kernel:
600
+ - Lower memory footprint
601
+ - Higher throughput/concurrency for reads
602
+ - Common interface for loading kernel extensions (f.ex. shell)
603
+
604
+ 1.1 (2010-07-29)
605
+ ----------------
606
+
607
+ -New components
608
+ o Graph-algo
609
+ o Online-backup
610
+
611
+ 1.0 (2010-02-16)
612
+ ----------------
613
+
614
+ -Initial components
615
+ o Kernel
616
+ o Index
617
+ o Remote-graphdb
618
+ o Shell