Clone Tools
  • last updated a few minutes ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
MODE-2401 Added support for handling mixins which have the "noquery" type attribute and updated the code to reflect the differences between the "noquery" types and the previously existing ModeShape noquery document attribute which has a different semantic.

  1. … 38 more files in changeset.
MODE-2401 Fixed the fact that queryable children which were under parents that had the noquery attribute were not taken into account by the query engine.

  1. … 3 more files in changeset.
MODE-2448 Fixed unicode support in regex matching for FTS.

  1. … 1 more file in changeset.
MODE-2435 Fixed the sorting sequence handling of batches.

    • -2
    • +5
    ./engine/process/BufferingSequence.java
  1. … 1 more file in changeset.
MODE-2425 Fixed PATH() queries with SET criteria.

  1. … 1 more file in changeset.
MODE-2401 Updated the query & indexing SPI to handle the "noquery" type attribute.

  1. … 10 more files in changeset.
MODE-2355 Fixed several indexing related issues: - when constraint contains the OR operator and index should apply only if it applies to all the parts of the constraint - the (cost * cardinality) formula should always be used when deciding which indexes to use - when determining the node-type criteria for the index selection, always use only the less-specific node type (i.e. super-type)

  1. … 5 more files in changeset.
MODE-2346 Changed the logic around the selection of the indexes in the query plan. User-defined indexes should always have priority over the DescendantsByPath implicit index.

  1. … 5 more files in changeset.
MODE-2347, MODE-1055 Made sure QOM behaves in the same way as SQL2 as far as missing selector columns in queries.

  1. … 2 more files in changeset.
MODE-2329 Fixed the handling of expanded form selector names for the query engine.

  1. … 1 more file in changeset.
MODE-2290 Corrected use of mixin aliases in determining whether indexes are applicable

When an alias is used in a query, there is a constraint that specifies the allowed values for the 'jcr:primaryType' or 'jcr:mixinTypes' properties. (This constraint is added during the planning/optimization phase, and is based upon whether the selected node type is a mixin.)

The logic used in the IndexCalculator was only looking for constraints on 'jcr:primaryType', and thus any alias on a type that was a mixin type would not apply to any indexes. Changing the logic to also look at the 'jcr:mixinTypes' in the property value of the constraint fixes the problem.

  1. … 1 more file in changeset.
MODE-2312 Implicit indexes used on comparison constraints with jcr:uuid and jcr:path

  1. … 1 more file in changeset.
MODE-2314 Corrected indexing operations

  1. … 6 more files in changeset.
MODE-2318 Corrected behavior of indexes on restart.

  1. … 7 more files in changeset.
MODE-2313 Corrected concurrent modification exceptions, and changed query engine to not use indexes that are being rebuild via re-indexing.

  1. … 11 more files in changeset.
MODE-2297 Corrected getNodes() functionality

Changed the tests to always check the query via rows and, if there's only one selector in the query, also by nodes. Fix a problem when getting the nodes on some queries.

  1. … 2 more files in changeset.
MODE-2297 Minor correction to previous change on pseudocolumns.

  1. … 2 more files in changeset.
MODE-2297 Using pseudocolumns no longer is a warning

Using a pseudocolumn in a select used to result in a warning, but that is no longer the case. Also cleaned up the places that used pseudocolumns by encapsulating all pseudocolumn info into a single class.

    • -0
    • +212
    ./PseudoColumns.java
  1. … 3 more files in changeset.
MODE-2307 Indexes are now used when join conditions can be applied

Previously, index applicability only took into account constraints. So when an access query did not have any constraints (other than on jcr:primaryType or jcr:mixinTypes) then indexes were not considered, even though an index might apply to one of the selectors & properties on one side of the join condition.

With this change, it is now possible for the repository to try to apply indexes based upon constraints and/or join conditions. For example, an index on 'jcr:uuid' might apply to a SameNodeJoinCondition. Or, a property index might apply when an EquiJoinCondition involves that property.

Note that in these cases, join conditions have no literal values on which the index can filter its results, but it still can be used by returning all nodes in the index. This still might be significantly better than scanning the index.

It's even possible now that indexes might be applied based upon join constraints (additional constraints that apply to the join, and that cannot be pushed down to either side of the join).

  1. … 5 more files in changeset.
MODE-2307 Corrected how subselects are used in dependent joins

  1. … 2 more files in changeset.
MODE-2297 Corrected query engine to properly report mismatched set operation columns

  1. … 8 more files in changeset.
MODE-2297 Corrected asymmetric set operations

A recent change introduced a bug that caused some parts of joins to be removed when rewritten.

    • -1
    • +1
    ./engine/process/DistinctSequence.java
    • -2
    • +2
    ./engine/process/HashJoinSequence.java
    • -1
    • +1
    ./engine/process/IntersectSequence.java
  1. … 4 more files in changeset.
MODE-2295 Fixed a number of issues with indexes

Indexes were not properly removing values, nor were they adding only nodes that satisfied their

definition's node type. Correcting the latter required handling when the node types in the repository

were changed, which might affect which node types are to be included in a given index. Therefore,

care was taken so that the index provider implementations' IndexChangeAdapters automatically handled

changes in the repository's node types.

A number of tests were added to replicate the problems reported in MODE-2295, and even more were

added to verify the proper behavior (including removing values) in the low-level local index

implementations. In particular, the UniqueKeyComparator logic was not quite handling all of the negative

infinity cases it should have (it was already correctly handling the positive infinity cases).

  1. … 27 more files in changeset.
MODE-2296 Removed an assertion that is not valid, and added tests to replicate reported problem

    • -1
    • +0
    ./engine/process/BufferingSequence.java
  1. … 2 more files in changeset.
MODE-2297 Corrected how result sets are built from columns when queries use set operations

If one of the queries in a set query uses a join and returned values from only the second selector (e.g., the right side of the join), then the result object was built incorrectly to access the values by the wrong index. This commit adds a test to replicate the situation and fixes the underlying problem.

  1. … 1 more file in changeset.
MODE-2297 Corrected removal of unused identity joins.

    • -14
    • +57
    ./engine/ScanningQueryEngine.java
    • -12
    • +41
    ./optimize/RewriteIdentityJoins.java
  1. … 5 more files in changeset.
MODE-2292 Indexes and definitions are now properly persisted and work across repository restarts.

  1. … 17 more files in changeset.
MODE-2151 Added support for CHILDCOUNT dynamic operand

Pretty basic support that should prove quite useful in certain situations. This may be relatively

expensive when the repository has nodes with lots of children since it requires loading the parent

node's child references in order to obtain the count. The CHILDCOUNT criteria would therefore work

much better/faster as filtering criteria in a query that already defines criteria that indexes can

use.

    • -0
    • +84
    ./model/ChildCount.java
  1. … 7 more files in changeset.
MODE-2290 Corrected use of indexes for criteria with aliases and bind variables

Corrected the way that indexes are planned for criteria that involve aliases and bind variables. Also added several new tests to verify the expected behavior.

  1. … 11 more files in changeset.
MODE-2286 Minor change to make recent change more efficient

  1. … 1 more file in changeset.