From bf35370c1febd18221c8531935a2edf732071345 Mon Sep 17 00:00:00 2001 From: huangjunwei Date: Sun, 18 Jun 2023 10:59:37 +0800 Subject: [PATCH] use github.com/klauspost/compress/zstd instead of github.com/DataDog/zstd --- go.mod | 2 +- go.sum | 4 ++-- packet/conn.go | 6 +++--- replication/transaction_payload_event.go | 11 +++++++++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index a8ac10eba..da4150af4 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,11 @@ go 1.16 require ( github.com/BurntSushi/toml v0.3.1 - github.com/DataDog/zstd v1.5.2 github.com/Masterminds/semver v1.5.0 github.com/go-sql-driver/mysql v1.6.0 github.com/google/uuid v1.3.0 github.com/jmoiron/sqlx v1.3.3 + github.com/klauspost/compress v1.16.6 github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 github.com/pingcap/errors v0.11.5-0.20210425183316-da1aaba5fb63 github.com/pingcap/tidb/parser v0.0.0-20221126021158-6b02a5d8ba7d diff --git a/go.sum b/go.sum index 3ddb545c8..63f78125a 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,5 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= @@ -19,6 +17,8 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jmoiron/sqlx v1.3.3 h1:j82X0bf7oQ27XeqxicSZsTU5suPwKElg3oyxNn43iTk= github.com/jmoiron/sqlx v1.3.3/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ= +github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= +github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= diff --git a/packet/conn.go b/packet/conn.go index 963b89e98..866e9ac81 100644 --- a/packet/conn.go +++ b/packet/conn.go @@ -13,9 +13,9 @@ import ( "net" "sync" - "github.com/DataDog/zstd" . "github.com/go-mysql-org/go-mysql/mysql" "github.com/go-mysql-org/go-mysql/utils" + "github.com/klauspost/compress/zstd" "github.com/pingcap/errors" ) @@ -125,7 +125,7 @@ func (c *Conn) ReadPacketReuseMem(dst []byte) ([]byte, error) { case MYSQL_COMPRESS_ZLIB: c.compressedReader, err = zlib.NewReader(c.reader) case MYSQL_COMPRESS_ZSTD: - c.compressedReader = zstd.NewReader(c.reader) + c.compressedReader, err = zstd.NewReader(c.reader) } if err != nil { return nil, err @@ -290,7 +290,7 @@ func (c *Conn) writeCompressed(data []byte) (n int, err error) { case MYSQL_COMPRESS_ZLIB: w, err = zlib.NewWriterLevel(&payload, zlib.HuffmanOnly) case MYSQL_COMPRESS_ZSTD: - w = zstd.NewWriter(&payload) + w, err = zstd.NewWriter(&payload) } if err != nil { return 0, err diff --git a/replication/transaction_payload_event.go b/replication/transaction_payload_event.go index 8b69a1441..3c85c03bb 100644 --- a/replication/transaction_payload_event.go +++ b/replication/transaction_payload_event.go @@ -1,12 +1,13 @@ package replication import ( + "bytes" "encoding/binary" "encoding/hex" "fmt" "io" - "github.com/DataDog/zstd" + "github.com/klauspost/compress/zstd" . "github.com/go-mysql-org/go-mysql/mysql" ) @@ -104,7 +105,13 @@ func (e *TransactionPayloadEvent) decodePayload() error { e.CompressionType, e.compressionType()) } - payloadUncompressed, err := zstd.Decompress(nil, e.Payload) + reader, err := zstd.NewReader(bytes.NewBuffer(e.Payload)) + if err != nil { + return err + } + defer reader.Close() + + payloadUncompressed, err := io.ReadAll(reader) if err != nil { return err }