-
Notifications
You must be signed in to change notification settings - Fork 15
/
TODO.txt
169 lines (91 loc) · 5.11 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
optimize lists and arrays using dynamic classes
---done--- add concurrency test for directly modifying Graphs
does a node who's relation change need a new version ???
concurrency: updateMappingsIfNeeded has to ask the graph for changes
---done--- comment additional config properties for embedded db access
---done--- ad dependency in docu for: neo4j-io
check createContains for same bug as in createWhereIn
domain labels with index search
---done--- constraints on traversal results in select expressions may only be expressed on direct traversals from the expressions source set
-> do a validation
---done--- test for contains and count if direct traversals
---done--- check traversal query "BACK_02" for optimization on IN clause
---done--- DomainObjectMatch.COUNT() for predicates in collection expressions
check TODOs in QueryExecutor
---done--- QueryExecutor-StepClause -> refactor code for stepForward and stepBackward (avoid redundancies)
how to handle multiple hops with surrogate classes
traversal of maps
---done--- optimization: reduce return statements
---done--- inner class surrogates - handle relations
---done--- add domain name as node label
---done--- optimize domain query pagination, remove match clauses if no dependencies exits
optimize pagination query for Domain Mapping (see Domain Queries)
lists arrays maps as root objects
remove surrogate objects from result
---done--- support inner classes
START.node(n).byId(ids...) now works, some queries can be made simpler now
---done--- docu: domain objects must have default constructor
avoid stack overflow on mixed (simple / complex) lists (they are not supported)
optimization: dynamic max query length
---done--- mapping of java arrays
---done--- guarantee uniqueness of node labels
---done--- don't place objects which have only simple attributes to the set of reload-deep objects (optimization)
reuse MapEntry nodes ?
optimize query building for MapEntry (- classFieldName)
---done--- relationKey for MapEntry must be unique for map
--> not required as the KeyedRelation is unique based on sourceField and MapEntry
---done--- handle ambiguous types in MapEntry - optimize query building
---done--- remove MapEntry Objects and their relations
---done--- don't map transient attributes
---done--- relations in case of collections must be multiple
ambiguous with null values -- revisit
---done--- handle Date subclasses
---done--- map lists of lists, maps of maps, maps of lists, lists of maps
---done--- delete property when updating from empty to nonempty list needing relation
Test in future versions:
// currently if you use parameters in a cypher query, and a parameter is a list,
// this does not work properly. Instead of storing a list as property value,
// everything is converted to a string.
// The workaround is not to use paramaters with cypher queries and lists.
// This is true for NEO4J Versions at least up to 2.1.4
// If this is corrected in NEO4J some time to come, you simply in class CypherWriter
// can set CORRECT_FOR_LIST_WITH_PARAMS to false and the workaround
// will be removed
add unit test for SEPARATE clause
reentrancy, multithreading, concurrency on db !!
---done--- fill relationToIdMap from load !!
---done--- Recursions in buildClosureQuery ?!
---done--- Problem: DISTINCT with Multiple RETURNs
---done--- Consolidate Util classes
---done--- reuse ExecutionEngine
---done--- query parameters in embedded db
---done--- CREATE_UNIQUE pattern not supported -- check this --> it is ok
---done--- params or parameters depending on REST endpoint 'cypher' or 'transaction' how to handle ?? (configurable ??)
---done--- fix: "query":"START n = node:Persons(\"name:A\")" --> this is correct in JSON !!!
---done--- Mathematical functions.
---done--- TOINT, TOFLOAT
IMultiple: JcPath, JcNode and JcRelation are possibly collections (should be usable as collections)
---done---in javadoc exchange 'match' with 'match or create (depends on the clause)' or ''blank
---done--- COALESCE
MATCH:
Relationship types with uncommon characters
---done--- OPTIONAL MATCH
---done--- Aggregation
---done--- Factory Class R needed? --> no, removed
---done--- create, drop index
---done--- Scalar functions
---done--- function length(path)
---obsolete--- substringFrom(start) instead of substring(start)
---done--- Number operators % , ^
---done--- concat: <-> in quotes? do check !!!
---done--- test function LABELS + JcNode.label(...)
---done---map PredicateExpression to CollectExpression ausführlich testen !!!
---obsolete--- JcValue als Variable in z.B. forAll(x) dort darf nur x aber kein Ausdruck stehen (wie stell ich das sicher !?)
---done---ClauseType gehört in ASTNode, ClausePart wird obsolet
---done--- Verwendung von P kontrollieren --> (wird in return expressions benötigt)
---obsolete--- RETURN element: runtime: das erste in der ValueElement Kette verwenden oder exception werfen !?
-->
---is ok--- ValueElement ist einziger Parent von JcValue
---done--- collect() zu returns, weg von collections ?! --> NEIN
---done---holdsTrue einfacher z.B. holdsTrue().forAll(n) ? Nein scheint OK so !!
---done---check need for factory ST -> remove ST