Examples of OQueryOperator


Examples of com.orientechnologies.orient.core.sql.operator.OQueryOperator

      return null;

    final Object right = condition.getRight();
    final Object left = condition.getLeft();

    final OQueryOperator operator = condition.getOperator();
    if (!(operator instanceof OQueryOperatorAnd))
      return null;

    if (!(right instanceof OSQLFilterCondition))
      return null;

    if (!(left instanceof OSQLFilterCondition))
      return null;

    String rightField;

    final OSQLFilterCondition rightCondition = (OSQLFilterCondition) right;
    final OSQLFilterCondition leftCondition = (OSQLFilterCondition) left;

    if (rightCondition.getLeft() instanceof OSQLFilterItemField && rightCondition.getRight() instanceof OSQLFilterItemField)
      return null;

    if (!(rightCondition.getLeft() instanceof OSQLFilterItemField) && !(rightCondition.getRight() instanceof OSQLFilterItemField))
      return null;

    if (leftCondition.getLeft() instanceof OSQLFilterItemField && leftCondition.getRight() instanceof OSQLFilterItemField)
      return null;

    if (!(leftCondition.getLeft() instanceof OSQLFilterItemField) && !(leftCondition.getRight() instanceof OSQLFilterItemField))
      return null;

    final List<Object> betweenBoundaries = new ArrayList<Object>();

    if (rightCondition.getLeft() instanceof OSQLFilterItemField) {
      OSQLFilterItemField itemField = (OSQLFilterItemField) rightCondition.getLeft();
      if (!itemField.isFieldChain())
        return null;

      if (itemField.getFieldChain().getItemCount() > 1)
        return null;

      rightField = itemField.getRoot();
      betweenBoundaries.add(rightCondition.getRight());
    } else if (rightCondition.getRight() instanceof OSQLFilterItemField) {
      OSQLFilterItemField itemField = (OSQLFilterItemField) rightCondition.getRight();
      if (!itemField.isFieldChain())
        return null;

      if (itemField.getFieldChain().getItemCount() > 1)
        return null;

      rightField = itemField.getRoot();
      betweenBoundaries.add(rightCondition.getLeft());
    } else
      return null;

    betweenBoundaries.add("and");

    String leftField;
    if (leftCondition.getLeft() instanceof OSQLFilterItemField) {
      OSQLFilterItemField itemField = (OSQLFilterItemField) leftCondition.getLeft();
      if (!itemField.isFieldChain())
        return null;

      if (itemField.getFieldChain().getItemCount() > 1)
        return null;

      leftField = itemField.getRoot();
      betweenBoundaries.add(leftCondition.getRight());
    } else if (leftCondition.getRight() instanceof OSQLFilterItemField) {
      OSQLFilterItemField itemField = (OSQLFilterItemField) leftCondition.getRight();
      if (!itemField.isFieldChain())
        return null;

      if (itemField.getFieldChain().getItemCount() > 1)
        return null;

      leftField = itemField.getRoot();
      betweenBoundaries.add(leftCondition.getLeft());
    } else
      return null;

    if (!leftField.equalsIgnoreCase(rightField))
      return null;

    final OQueryOperator rightOperator = ((OSQLFilterCondition) right).getOperator();
    final OQueryOperator leftOperator = ((OSQLFilterCondition) left).getOperator();

    if ((rightOperator instanceof OQueryOperatorMajor || rightOperator instanceof OQueryOperatorMajorEquals)
        && (leftOperator instanceof OQueryOperatorMinor || leftOperator instanceof OQueryOperatorMinorEquals)) {

      final OQueryOperatorBetween between = new OQueryOperatorBetween();
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.operator.OQueryOperator

        final OIndexDefinition indexDefinition = index.getDefinition();

        if (searchResult.containsNullValues && indexDefinition.isNullValuesIgnored())
          continue;

        final OQueryOperator operator = searchResult.lastOperator;

        // we need to test that last field in query subset and field in index that has the same position
        // are equals.
        if (!OIndexSearchResult.isIndexEqualityOperator(operator)) {
          final String lastFiled = searchResult.lastField.getItemName(searchResult.lastField.getItemCount() - 1);
          final String relatedIndexField = indexDefinition.getFields().get(searchResult.fieldValuePairs.size());
          if (!lastFiled.equals(relatedIndexField))
            continue;
        }

        final int searchResultFieldsCount = searchResult.fields().size();
        final List<Object> keyParams = new ArrayList<Object>(searchResultFieldsCount);
        // We get only subset contained in processed sub query.
        for (final String fieldName : indexDefinition.getFields().subList(0, searchResultFieldsCount)) {
          final Object fieldValue = searchResult.fieldValuePairs.get(fieldName);
          if (fieldValue instanceof OSQLQuery<?>)
            return false;

          if (fieldValue != null)
            keyParams.add(fieldValue);
          else {
            if (searchResult.lastValue instanceof OSQLQuery<?>)
              return false;

            keyParams.add(searchResult.lastValue);
          }
        }

        metricRecorder.recordInvolvedIndexesMetric(index);

        OIndexCursor cursor;
        final boolean indexIsUsedInOrderBy = orderByOptimizer.canBeUsedByOrderBy(index, orderedFields)
            && !(index.getInternal() instanceof OChainedIndexProxy);
        try {
          boolean ascSortOrder = !indexIsUsedInOrderBy || orderedFields.get(0).getValue().equals(KEYWORD_ASC);

          if (indexIsUsedInOrderBy)
            fullySortedByIndex = indexDefinition.getFields().size() >= orderedFields.size();

          context.setVariable("$limit", limit);
          cursor = operator.executeIndexQuery(context, index, keyParams, ascSortOrder);
        } catch (OIndexEngineException e) {
          throw e;
        } catch (Exception e) {
          OLogManager
              .instance()
View Full Code Here

Examples of com.orientechnologies.orient.core.sql.operator.OQueryOperator

    if (compiledFilter != null && compiledFilter.getRootCondition() != null) {
      if (!"KEY".equalsIgnoreCase(compiledFilter.getRootCondition().getLeft().toString()))
        throw new OCommandExecutionException("'Key' field is required for queries against indexes");

      final OQueryOperator indexOperator = compiledFilter.getRootCondition().getOperator();

      if (indexOperator instanceof OQueryOperatorBetween) {
        final Object[] values = (Object[]) compiledFilter.getRootCondition().getRight();

        final OIndexCursor cursor = index.iterateEntriesBetween(getIndexKey(index.getDefinition(), values[0], context), true,
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.