Browse Source

Fix response handling for UDF queries

Handle the response frame from UDF queries.

Fixes #500
Chris Bannister 10 years ago
parent
commit
8902c68ae1
3 changed files with 24 additions and 5 deletions
  1. 18 0
      cassandra_test.go
  2. 1 1
      conn.go
  3. 5 4
      integration.sh

+ 18 - 0
cassandra_test.go

@@ -2270,3 +2270,21 @@ func TestJSONSupport(t *testing.T) {
 		t.Errorf("got state %q expected %q", state, "TX")
 	}
 }
+
+func TestUDF(t *testing.T) {
+	if *flagProto < 4 {
+		t.Skip("skipping UDF support on proto < 4")
+	}
+
+	session := createSession(t)
+	defer session.Close()
+
+	const query = `CREATE OR REPLACE FUNCTION uniq(state set<text>, val text)
+	  CALLED ON NULL INPUT RETURNS set<text> LANGUAGE java
+	  AS 'state.add(val); return state;'`
+
+	err := session.Query(query).Exec()
+	if err != nil {
+		t.Fatal(err)
+	}
+}

+ 1 - 1
conn.go

@@ -700,7 +700,7 @@ func (c *Conn) executeQuery(qry *Query) *Iter {
 		}
 
 		return iter
-	case *resultKeyspaceFrame, *resultSchemaChangeFrame, *schemaChangeKeyspace, *schemaChangeTable:
+	case *resultKeyspaceFrame, *resultSchemaChangeFrame, *schemaChangeKeyspace, *schemaChangeTable, *schemaChangeFunction:
 		return &Iter{framer: framer}
 	case *RequestErrUnprepared:
 		stmtsLRU.Lock()

+ 5 - 4
integration.sh

@@ -40,10 +40,6 @@ function run_tests() {
 		rm -rf $HOME/.ccm/test/node1/data/system_auth
 	fi
 
-	ccm start -v
-	ccm status
-	ccm node1 nodetool status
-
 	local proto=2
 	if [[ $version == 1.2.* ]]; then
 		proto=1
@@ -53,8 +49,13 @@ function run_tests() {
 		proto=3
 	elif [[ $version == 2.2.* ]]; then
 		proto=4
+		ccm updateconf 'enable_user_defined_functions: true'
 	fi
 
+	ccm start -v
+	ccm status
+	ccm node1 nodetool status
+
 	if [ "$auth" = true ]
 	then
     	sleep 30s