Merge branch 'cassandra-2.1' into cassandra-2.2

Conflicts:
        src/java/org/apache/cassandra/cql3/QueryProcessor.java


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0d5908bc
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0d5908bc
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0d5908bc

Branch: refs/heads/cassandra-2.2
Commit: 0d5908bcc031f93b439fe9a2d717b8e2f9a98740
Parents: 72f2cc4 e9f3604
Author: Sylvain Lebresne <sylv...@datastax.com>
Authored: Fri Sep 11 18:40:23 2015 +0200
Committer: Sylvain Lebresne <sylv...@datastax.com>
Committed: Fri Sep 11 18:40:23 2015 +0200

----------------------------------------------------------------------
 src/java/org/apache/cassandra/cql3/QueryProcessor.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0d5908bc/src/java/org/apache/cassandra/cql3/QueryProcessor.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/QueryProcessor.java
index b1b4cb4,d59d84f..e9ff1b1
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@@ -597,30 -612,13 +597,30 @@@ public class QueryProcessor implements 
              return ksName.equals(statementKsName) && (cfName == null || 
cfName.equals(statementCfName));
          }
  
 +        public void onCreateFunction(String ksName, String functionName, 
List<AbstractType<?>> argTypes) {
 +            if (Functions.getOverloadCount(new FunctionName(ksName, 
functionName)) > 1)
 +            {
 +                // in case there are other overloads, we have to remove all 
overloads since argument type
 +                // matching may change (due to type casting)
 +                
removeInvalidPreparedStatementsForFunction(preparedStatements.values().iterator(),
 ksName, functionName);
 +                
removeInvalidPreparedStatementsForFunction(thriftPreparedStatements.values().iterator(),
 ksName, functionName);
 +            }
 +        }
 +        public void onCreateAggregate(String ksName, String aggregateName, 
List<AbstractType<?>> argTypes) {
 +            if (Functions.getOverloadCount(new FunctionName(ksName, 
aggregateName)) > 1)
 +            {
 +                // in case there are other overloads, we have to remove all 
overloads since argument type
 +                // matching may change (due to type casting)
 +                
removeInvalidPreparedStatementsForFunction(preparedStatements.values().iterator(),
 ksName, aggregateName);
 +                
removeInvalidPreparedStatementsForFunction(thriftPreparedStatements.values().iterator(),
 ksName, aggregateName);
 +            }
 +        }
 +
          public void onUpdateColumnFamily(String ksName, String cfName, 
boolean columnsDidChange)
          {
-             logger.info("Column definitions for {}.{} changed, invalidating 
related prepared statements", ksName, cfName);
++            logger.debug("Column definitions for {}.{} changed, invalidating 
related prepared statements", ksName, cfName);
              if (columnsDidChange)
 -            {
 -                logger.debug("Column definitions for {}.{} changed, 
invalidating related prepared statements", ksName, cfName);
                  removeInvalidPreparedStatements(ksName, cfName);
 -            }
          }
  
          public void onDropKeyspace(String ksName)
@@@ -631,41 -629,8 +631,41 @@@
  
          public void onDropColumnFamily(String ksName, String cfName)
          {
-             logger.info("Table {}.{} was dropped, invalidating related 
prepared statements", ksName, cfName);
+             logger.debug("Table {}.{} was dropped, invalidating related 
prepared statements", ksName, cfName);
              removeInvalidPreparedStatements(ksName, cfName);
          }
 -      }
 +
 +        public void onDropFunction(String ksName, String functionName, 
List<AbstractType<?>> argTypes)
 +        {
 +            
removeInvalidPreparedStatementsForFunction(preparedStatements.values().iterator(),
 ksName, functionName);
 +            
removeInvalidPreparedStatementsForFunction(thriftPreparedStatements.values().iterator(),
 ksName, functionName);
 +        }
 +
 +        public void onDropAggregate(String ksName, String aggregateName, 
List<AbstractType<?>> argTypes)
 +        {
 +            
removeInvalidPreparedStatementsForFunction(preparedStatements.values().iterator(),
 ksName, aggregateName);
 +            
removeInvalidPreparedStatementsForFunction(thriftPreparedStatements.values().iterator(),
 ksName, aggregateName);
 +        }
 +
 +        private static void 
removeInvalidPreparedStatementsForFunction(Iterator<ParsedStatement.Prepared> 
statements,
 +                                                                       final 
String ksName,
 +                                                                       final 
String functionName)
 +        {
 +            final Predicate<Function> matchesFunction = new 
Predicate<Function>()
 +            {
 +                public boolean apply(Function f)
 +                {
 +                    return ksName.equals(f.name().keyspace) && 
functionName.equals(f.name().name);
 +                }
 +            };
 +
 +            Iterators.removeIf(statements, new 
Predicate<ParsedStatement.Prepared>()
 +            {
 +                public boolean apply(ParsedStatement.Prepared statement)
 +                {
 +                    return Iterables.any(statement.statement.getFunctions(), 
matchesFunction);
 +                }
 +            });
 +        }
 +    }
  }

Reply via email to