cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sandeep Tamhankar (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-10840) Replacing an aggregate with a new version doesn't reset INITCOND
Date Thu, 10 Dec 2015 23:03:10 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-10840?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15051810#comment-15051810
] 

Sandeep Tamhankar commented on CASSANDRA-10840:
-----------------------------------------------

Just tried it on 3.0, and the issue does not occur there.
But there is another interesting behavior difference in 3.0 vs. 2.2.4. The aggregates metadata
in 3.0 shows that initcond is {} when I issue cql with {}, but in 2.2.4 it shows 0x00000000.
Not sure it's an issue, but it's odd.

> Replacing an aggregate with a new version doesn't reset INITCOND
> ----------------------------------------------------------------
>
>                 Key: CASSANDRA-10840
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10840
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL
>         Environment: Observed in Cassandra 2.2.4, though it might be an issue in 3.0
as well
>            Reporter: Sandeep Tamhankar
>            Assignee: Robert Stupp
>             Fix For: 2.2.x, 3.0.x, 3.x
>
>
> {code}
> use simplex;
>       CREATE FUNCTION state_group_and_sum(state map<int, int>, star_rating int)
>                       CALLED ON NULL INPUT
>                       RETURNS map<int, int>
>                       LANGUAGE java
>                       AS 'if (state.get(star_rating) == null) state.put(star_rating,
1); else state.put(star_rating, ((Integer) state.get(star_rating)) + 1); return state;';
>       CREATE FUNCTION percent_stars(state map<int,int>)
>                       RETURNS NULL ON NULL INPUT
>                       RETURNS map<int, int>
>                       LANGUAGE java AS $$
> Integer sum = 0; 
> for(Object k : state.keySet()) { 
>     sum = sum + (Integer) state.get((Integer) k);
> }
> java.util.Map<Integer, Integer> results = new java.util.HashMap<Integer, Integer>();
> for(Object k : state.keySet()) {
>     results.put((Integer) k, ((Integer) state.get((Integer) k))*100 / sum);
> }
> return results;
> $$;
> {code}
> {code}
> CREATE OR REPLACE AGGREGATE group_and_sum(int)
>                     SFUNC state_group_and_sum
>                     STYPE map<int, int>
>                     FINALFUNC percent_stars
>                     INITCOND {}
> {code}
> 1. View the aggregates
> {{select * from system.schema_aggregates;}}
> 2. Now update
> {code}
> CREATE OR REPLACE AGGREGATE group_and_sum(int)
>                     SFUNC state_group_and_sum
>                     STYPE map<int, int>
>                     FINALFUNC percent_stars
>                     INITCOND NULL
> {code}
> 3. View the aggregates
> {{select * from system.schema_aggregates;}}
> Expected result:
> * The update should have made initcond null
> Actual result:
> * The update did not touch INITCOND.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message