 				guard case .tuple(let rs) = self.stack.popLast()! else { fatalError() }
 				guard case .columnList(let cs) = self.stack.popLast()! else { fatalError() }
 				guard case .tableIdentifier(let tn) = self.stack.popLast()! else { fatalError() }
-				self.stack.append(.statement(.insert(into: tn, columns: cs, values: [rs])))
+				guard case .statement(let statement) = self.stack.popLast()! else { fatalError() }
+				guard case .insert(var insert) = statement else { fatalError() }
+
+				insert.into = tn
+				insert.columns = cs
+				insert.values = [rs]
+
+				self.stack.append(.statement(.insert(insert)))
 			})
 
 		// Statement categories


	var isMutating: Bool {
		switch self {
		case .create, .drop, .delete, .update, .insert(into:_, columns:_, values:_):
			return true

		case .select(_):

		add_named_rule("ex", rule: ^"ex-equality")

		// Types
		add_named_rule("type-text", rule: Parser.matchLiteralInsensitive("TEXT") => { self.stack.append(.type(SQLType.text)) })
		add_named_rule("type-int", rule: Parser.matchLiteralInsensitive("INT") => { self.stack.append(.type(SQLType.int)) })
		add_named_rule("type", rule: ^"type-text" | ^"type-int")

		// Column definition
