Skip to content

Commit

Permalink
Implement elapsed time in query progress (#1039)
Browse files Browse the repository at this point in the history
* Implement elapsed time in query progress

* add debug
  • Loading branch information
jkaflik authored and zifengyu committed Jul 29, 2024
1 parent 2668868 commit 0980329
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 21 deletions.
39 changes: 20 additions & 19 deletions lib/proto/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,26 @@ package proto

// see https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Protocol.h
const (
DBMS_MIN_REVISION_WITH_CLIENT_INFO = 54032
DBMS_MIN_REVISION_WITH_SERVER_TIMEZONE = 54058
DBMS_MIN_REVISION_WITH_QUOTA_KEY_IN_CLIENT_INFO = 54060
DBMS_MIN_REVISION_WITH_SERVER_DISPLAY_NAME = 54372
DBMS_MIN_REVISION_WITH_VERSION_PATCH = 54401
DBMS_MIN_REVISION_WITH_CLIENT_WRITE_INFO = 54420
DBMS_MIN_REVISION_WITH_SETTINGS_SERIALIZED_AS_STRINGS = 54429
DBMS_MIN_REVISION_WITH_INTERSERVER_SECRET = 54441
DBMS_MIN_REVISION_WITH_OPENTELEMETRY = 54442
DBMS_MIN_PROTOCOL_VERSION_WITH_DISTRIBUTED_DEPTH = 54448
DBMS_MIN_PROTOCOL_VERSION_WITH_INITIAL_QUERY_START_TIME = 54449
DBMS_MIN_PROTOCOL_VERSION_WITH_INCREMENTAL_PROFILE_EVENTS = 54451
DBMS_MIN_REVISION_WITH_PARALLEL_REPLICAS = 54453
DBMS_MIN_REVISION_WITH_CUSTOM_SERIALIZATION = 54454
DBMS_MIN_PROTOCOL_VERSION_WITH_ADDENDUM = 54458
DBMS_MIN_PROTOCOL_VERSION_WITH_QUOTA_KEY = 54458
DBMS_MIN_PROTOCOL_VERSION_WITH_PARAMETERS = 54459
DBMS_MIN_PROTOCOL_VERSION_WITH_SERVER_GENERATE_UUID = 54460
DBMS_TCP_PROTOCOL_VERSION = DBMS_MIN_PROTOCOL_VERSION_WITH_SERVER_GENERATE_UUID
DBMS_MIN_REVISION_WITH_CLIENT_INFO = 54032
DBMS_MIN_REVISION_WITH_SERVER_TIMEZONE = 54058
DBMS_MIN_REVISION_WITH_QUOTA_KEY_IN_CLIENT_INFO = 54060
DBMS_MIN_REVISION_WITH_SERVER_DISPLAY_NAME = 54372
DBMS_MIN_REVISION_WITH_VERSION_PATCH = 54401
DBMS_MIN_REVISION_WITH_CLIENT_WRITE_INFO = 54420
DBMS_MIN_REVISION_WITH_SETTINGS_SERIALIZED_AS_STRINGS = 54429
DBMS_MIN_REVISION_WITH_INTERSERVER_SECRET = 54441
DBMS_MIN_REVISION_WITH_OPENTELEMETRY = 54442
DBMS_MIN_PROTOCOL_VERSION_WITH_DISTRIBUTED_DEPTH = 54448
DBMS_MIN_PROTOCOL_VERSION_WITH_INITIAL_QUERY_START_TIME = 54449
DBMS_MIN_PROTOCOL_VERSION_WITH_INCREMENTAL_PROFILE_EVENTS = 54451
DBMS_MIN_REVISION_WITH_PARALLEL_REPLICAS = 54453
DBMS_MIN_REVISION_WITH_CUSTOM_SERIALIZATION = 54454
DBMS_MIN_PROTOCOL_VERSION_WITH_ADDENDUM = 54458
DBMS_MIN_PROTOCOL_VERSION_WITH_QUOTA_KEY = 54458
DBMS_MIN_PROTOCOL_VERSION_WITH_PARAMETERS = 54459
DBMS_MIN_PROTOCOL_VERSION_WITH_SERVER_QUERY_TIME_IN_PROGRES = 54460
DBMS_MIN_PROTOCOL_VERSION_WITH_SERVER_GENERATE_UUID = 54461
DBMS_TCP_PROTOCOL_VERSION = DBMS_MIN_PROTOCOL_VERSION_WITH_SERVER_GENERATE_UUID
)

const (
Expand Down
16 changes: 14 additions & 2 deletions lib/proto/progress.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package proto

import (
"fmt"
"time"

"github.com/timeplus-io/proton-go-driver/v2/lib/binary"
)
Expand All @@ -29,6 +30,7 @@ type Progress struct {
TotalRows uint64
WroteRows uint64
WroteBytes uint64
Elapsed time.Duration
withClient bool
}

Expand All @@ -51,18 +53,28 @@ func (p *Progress) Decode(decoder *binary.Decoder, revision uint64) (err error)
return err
}
}

if revision >= DBMS_MIN_PROTOCOL_VERSION_WITH_SERVER_QUERY_TIME_IN_PROGRES {
var n uint64
if n, err = decoder.Uvarint(); err != nil {
return err
}
p.Elapsed = time.Duration(n) * time.Nanosecond
}

return nil
}

func (p *Progress) String() string {
if !p.withClient {
return fmt.Sprintf("rows=%d, bytes=%d, total rows=%d", p.Rows, p.Bytes, p.TotalRows)
return fmt.Sprintf("rows=%d, bytes=%d, total rows=%d, elapsed=%s", p.Rows, p.Bytes, p.TotalRows, p.Elapsed.String())
}
return fmt.Sprintf("rows=%d, bytes=%d, total rows=%d, wrote rows=%d wrote bytes=%d",
return fmt.Sprintf("rows=%d, bytes=%d, total rows=%d, wrote rows=%d wrote bytes=%d elapsed=%s",
p.Rows,
p.Bytes,
p.TotalRows,
p.WroteRows,
p.WroteBytes,
p.Elapsed.String(),
)
}

0 comments on commit 0980329

Please sign in to comment.