/** * Ensures that the given {@link SQLExpression} is not an {@link SQLExpression} that is multi-valued. * * @param expr * SQL expression, must not be <code>null</code> * @throws UnmappableException */ protected void assertNotMultiValued( SQLExpression expr ) throws UnmappableException { if ( expr.isMultiValued() ) { String msg = "Cannot apply filter as it refers to a column that stores multiple values in concatenated form.'"; throw new UnmappableException( msg ); } } }
private SQLOperation toProtoSql( PropertyIsLike op, String literal ) throws UnmappableException, FilterEvaluationException { String escape = "" + op.getEscapeChar(); String wildCard = "" + op.getWildCard(); String singleChar = "" + op.getSingleChar(); SQLExpression propName = toProtoSQL( op.getExpression() ); IsLikeString specialString = new IsLikeString( literal, wildCard, singleChar, escape ); String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( propName.isMultiValued() ) { // TODO escaping of pipe symbols sqlEncoded = "%|" + sqlEncoded + "|%"; } return getOperationFromBuilder( op, propName, sqlEncoded ); }
String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( propName.isMultiValued() ) { PrimitiveType pt = new PrimitiveType( STRING ); PrimitiveValue value = new PrimitiveValue( sqlEncoded, pt ); PrimitiveParticleConverter converter = new DefaultPrimitiveConverter( pt, null, propName.isMultiValued() ); SQLArgument argument = new SQLArgument( value, converter ); builder.add( argument );
String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( propName.isMultiValued() ) {
SQLExpression param1 = toProtoSQL( propIsEqualTo.getParameter1() ); SQLExpression param2 = toProtoSQL( propIsEqualTo.getParameter2() ); if ( !param1.isMultiValued() && !param2.isMultiValued() ) { inferType( param1, param2 ); SQLOperationBuilder builder = new SQLOperationBuilder( BOOLEAN ); SQLExpression param1 = toProtoSQL( propIsNotEqualTo.getParameter1(), true ); SQLExpression param2 = toProtoSQL( propIsNotEqualTo.getParameter2(), true ); if ( !param1.isMultiValued() && !param2.isMultiValued() ) { inferType( param1, param2 ); addExpression( builder, param1, op.isMatchCase() );