neo4j_server 1.8.1

Sign up to get free protection for your applications and to get access to all the features.
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