浏览代码

replace resultSchemaChangedFrame with event frames

Chris Bannister 10 年之前
父节点
当前提交
83f9932a7a
共有 2 个文件被更改,包括 18 次插入21 次删除
  1. 1 1
      conn.go
  2. 17 20
      frame.go

+ 1 - 1
conn.go

@@ -784,7 +784,7 @@ func (c *Conn) executeQuery(qry *Query) *Iter {
 		return iter
 	case *resultKeyspaceFrame:
 		return &Iter{framer: framer}
-	case *resultSchemaChangeFrame, *schemaChangeKeyspace, *schemaChangeTable, *schemaChangeFunction:
+	case *schemaChangeKeyspace, *schemaChangeTable, *schemaChangeFunction:
 		// Clear the statments cache so that we dont use stale table info for requests.
 		// TODO: only reset a specific table/keyapce and only when it is changed.
 		c.session.stmtsLRU.clear()

+ 17 - 20
frame.go

@@ -1007,18 +1007,6 @@ func (f *framer) parseResultPrepared() frame {
 	return frame
 }
 
-type resultSchemaChangeFrame struct {
-	frameHeader
-
-	change   string
-	keyspace string
-	table    string
-}
-
-func (s *resultSchemaChangeFrame) String() string {
-	return fmt.Sprintf("[result_schema_change change=%s keyspace=%s table=%s]", s.change, s.keyspace, s.table)
-}
-
 type schemaChangeKeyspace struct {
 	frameHeader
 
@@ -1053,15 +1041,24 @@ type schemaChangeFunction struct {
 
 func (f *framer) parseResultSchemaChange() frame {
 	if f.proto <= protoVersion2 {
-		frame := &resultSchemaChangeFrame{
-			frameHeader: *f.header,
-		}
-
-		frame.change = f.readString()
-		frame.keyspace = f.readString()
-		frame.table = f.readString()
+		change := f.readString()
+		keyspace := f.readString()
+		table := f.readString()
 
-		return frame
+		if table != "" {
+			return &schemaChangeTable{
+				frameHeader: *f.header,
+				change:      change,
+				keyspace:    keyspace,
+				object:      table,
+			}
+		} else {
+			return &schemaChangeKeyspace{
+				frameHeader: *f.header,
+				change:      change,
+				keyspace:    keyspace,
+			}
+		}
 	} else {
 		change := f.readString()
 		target := f.readString()