Repository navigation
*: update QL-LICENSE and STRUTIL-LICENSE. - #74
Merged
Merged
Conversation
improve document.
Member
|
LGTM |
|
SGTM |
Member
|
LGTM. |
qiuyesuifeng
added a commit
that referenced
this pull request
Sep 8, 2015
…gement *: update QL-LICENSE and STRUTIL-LICENSE.
YuJuncen
pushed a commit
to YuJuncen/tidb
that referenced
this pull request
Apr 23, 2021
…nd (pingcap#74) * restore: dump errors while importing each table into the log at the end * restore: addressed comments to pingcap#74
YuJuncen
pushed a commit
to YuJuncen/tidb
that referenced
this pull request
Apr 23, 2021
Signed-off-by: Neil Shen <overvenus@gmail.com>
xhebox
pushed a commit
to xhebox/tidb
that referenced
this pull request
Sep 28, 2021
xhebox
pushed a commit
to xhebox/tidb
that referenced
this pull request
Oct 8, 2021
ti-chi-bot
pushed a commit
that referenced
this pull request
Oct 9, 2021
okJiang
pushed a commit
to okJiang/tidb
that referenced
this pull request
Oct 19, 2021
Co-authored-by: Chunzhu Li <lichunzhu@stu.xjtu.edu.cn>
ngaut
added a commit
to ngaut/tidb
that referenced
this pull request
Aug 2, 2026
…ion point
Go's overflow message ends ` in '<expr>'`. It is built AT THE SIGNATURE
-- builtin_arithmetic.go writes fmt.Sprintf("(%s + %s)", args[0].String(),
args[1].String()) -- so the text is each RESOLVED argument's own String(),
not the statement's source.
Two pieces of plumbing are absent here, and either one alone makes a
hand-written approximation diverge, so this reports the seam rather than
half-building it:
* a column renders fully qualified, test.t.a. The rewritten
tidb_expr::Expr::Column holds the path AS WRITTEN; the resolved
db.table.column lives in the executor's FromScope and the Columns
trait the evaluator holds cannot be asked for it. The qualifier is
not unformatted at the raising frame -- it is not there.
* a literal renders as Go's formatting of the VALUE, not the source
text: 1e308 comes back as 1e+308. So a restore diverges even for a
constant-only expression, the case that looks trivially portable.
pingcap#74's generated-column expr_text is NOT reusable: restored with
WITHOUT_SCHEMA_NAME | WITHOUT_TABLE_NAME | NAME_BACK_QUOTES it produces
(`a` + 1), stripping exactly the qualifiers this message needs and
back-quoting the names it leaves bare.
Insertion point recorded in the test doc: tidb_expr::eval_in's
Expr::Binary(op, l, r) arm, which already holds Go's s.args.
The test pins today's class-and-code answer with the target text beside
it, so the divergence is measured rather than forgotten.
13 tasks
ngaut
pushed a commit
that referenced
this pull request
Sep 19, 2026
…m::String Root-caused the TPC-C ORDER_STATUS latency regression (2-3x vs Go, task #74): the COM_STMT_EXECUTE decoder collapsed Go's two ExecBinaryParam families into one PreparedValue::String, and prepared_parameters then bound every one of them as Datum::Bytes (binary collation). Go splits these: the BLOB family (TypeBlob/TypeTinyBlob/TypeMediumBlob/ TypeLongBlob) becomes NewBytesDatum, but the string family (TypeVarchar/ TypeString/TypeEnum/TypeSet/TypeGeometry/TypeBit/TypeUnspecified) becomes NewDatum(string) -- a string datum in the default collation, the same datum a quoted SQL literal produces. Binding a prepared `c_last = ?` as a binary-collation Bytes datum made it incomparable to the coprocessor's own describable form (PreparedParameterType::of keys the plan cache on the datum kind), so the predicate was evaluated locally over the whole scanned range instead of being pushed down -- about 160KB of TiKV rows per query, roughly 18ms instead of ~1ms. Fix: split tidb_protocol::PreparedValue::String into String (the string family) and a new Bytes variant (the BLOB family), matching Go's own grouping exactly, including the NULL-parameter special case (BLOB NULL is an empty bytes value, not SQL NULL). prepared_parameters now binds String parameters through Datum::new_string (default collation) and Bytes parameters through Datum::new_bytes (binary collation); Temporal parameters bind through Datum::new_string as well, since they were already text. Added a regression test asserting a binary-protocol string parameter binds the same datum kind a text literal would, and updated the protocol-level decode tests for the new Bytes variant. Swept the surrounding parameter-binding, predicate-pushdown, and index-range code for the same class of bug: none found. The charset- decode grouping, PreparedParameterType::of, infer_param_type_from_datum, and the ranger's point-range construction were already written to Go's exact semantics for both datum kinds; they were only ever fed the wrong kind from this one boundary.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.