-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sqlbase: add the missing comments and group functions by purpose #28943
Conversation
Note: I was careful to ensure there is no functionality change. |
7cd3885
to
d0c0125
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I love the code reorganizing and adding comments to it.
However, next time, please split this into multiple commits:
- 1 commit to move the code
- 1 commit to add the comments
It makes the reviewers life a lot easier to skip the code movement (besides where it lands) and concentrate on the updated descriptions.
Reviewed 4 of 4 files at r1, 1 of 1 files at r2, 18 of 18 files at r3.
Reviewable status: complete! 0 of 0 LGTMs obtained (and 1 stale)
pkg/sql/distsqlplan/physical_plan.go, line 900 at r3 (raw file):
// another, excluding its VisibleType type alias, which doesn't effect // equality. func equivalentTypes(c, other *sqlbase.ColumnType) bool {
This seems out of place in this file. Unless this is the only place where it is used.
pkg/sql/sqlbase/column_type_encoding.go, line 930 at r3 (raw file):
} func numBytesInBitArray(numBits int) int {
this could use a comment
pkg/sql/sqlbase/column_type_encoding.go, line 1031 at r3 (raw file):
} func encodeArrayElement(b []byte, d tree.Datum) ([]byte, error) {
could use a comment here too while you're at it
pkg/sql/sqlbase/column_type_properties.go, line 48 at r3 (raw file):
// Some notional complexity arises from the fact there are fewer // different types.T than different coltypes.T/ColumnTypes. This is // because some distinctions important at the time of data persistence
some distinctions which are important at the
pkg/sql/sqlbase/column_type_properties.go, line 51 at r3 (raw file):
// (or casts) are not useful to keep for in-flight values; for example // the final required precision for DECIMAL values. //
nit: extra blank comment lines
pkg/sql/sqlbase/column_type_properties.go, line 129 at r3 (raw file):
base.Width = int32(t.Scale) base.Precision = int32(t.Prec)
nit: remove this extra line, and add one after the switch to match the earlier blanks. Or just remove all blank lines, since the style changed again later.
pkg/sql/sqlbase/column_type_properties.go, line 255 at r3 (raw file):
// type is not a character or bit string, or if the string's length is not bounded. // // This is used to populate information_schema.columns.character_maximum_length.
Generally, it's advisable not to declare in a function where it is being used. Since that is likely to rot and doesn't provide much extra info.
For example, if we have a new use for it, should we add it here? If we remove that primary use of it, this comment also has to be changed.
(This comment applies to this whole file)
pkg/sql/sqlbase/column_type_properties.go, line 266 at r3 (raw file):
} // MaxOctetLength returns the maximum the maximum possible length in octets of a
the maximum is repeated
pkg/sql/sqlbase/column_type_properties.go, line 313 at r3 (raw file):
} // NumericPrecisionRadix returns implicit precision radix of numeric
returns the implicit
pkg/sql/sqlbase/column_type_properties.go, line 349 at r3 (raw file):
// // This function is for internal use in this package and only exported // for testing in pgwire. Avoid using directly!
If this is only used for testing, we should move it to column_type_properties_test.go to ensure it is not used in any main codepath.
pkg/sql/sqlbase/column_type_properties.go, line 409 at r3 (raw file):
// columnSemanticTypeToDatumType determines a types.T that can be used // to instantiate in-memory representation of values of the given
instantiate an in-memory representation of values for the given
pkg/sql/sqlbase/column_type_properties.go, line 463 at r3 (raw file):
// ToDatumType converts the ColumnType to a types.T suitable to instantiate // in-memory representations of the values of a column of the given ColumnType.
This sentence is confusing and needs work.
pkg/sql/sqlbase/column_type_properties.go, line 496 at r3 (raw file):
// CheckValueWidth checks that the width (for strings, byte arrays, and // bit string) and scale (for decimals) of the value fits the specified
bit strings) and
pkg/sql/sqlbase/index_encoding.go, line 58 at r3 (raw file):
// /<parent_table_id>/<parent_index_id>/<field_1>/<field_2>/NullDesc/<table_id>/<index_id>/<field_3>/<family> // // Returns the key and whether any of the encoded values were NULLs.
This comment should be with the first sentence, since it describes the function.
pkg/sql/sqlbase/index_encoding.go, line 246 at r3 (raw file):
} func appendEncDatumsToKey(
Could use a comment.
pkg/sql/sqlbase/index_encoding.go, line 272 at r3 (raw file):
// index.ExtraColumnIDs respectively. // // MakeKeyFromEncDatums (see above) does not allow you to create a key
remove the (see above)
and add Note:
or Note that
at the start
pkg/sql/sqlbase/index_encoding.go, line 319 at r3 (raw file):
// EncodeDatumKeyAscending encodes a datum using an order-preserving // encoding. // The encoding is lossy -- some datums need composite encoding where the
nit: the -- is strange. Perhaps a semicolon?
Similar for the datums version as well.
pkg/sql/sqlbase/index_encoding.go, line 666 at r3 (raw file):
// EncodeInvertedIndexKeys creates a list of inverted index keys // by concatenating keyPrefix with the encodings of the column in the index. //
Nit: remove space here. What this returns should be part of the main description.
pkg/sql/sqlbase/index_encoding.go, line 690 at r3 (raw file):
} // EncodeInvertedIndexTableKeys encodes the paths in a JSON `val` and concatenates it with `inKey`and returns
lint: This comment seems like it is longer than our normal max.
pkg/sql/sqlbase/index_encoding.go, line 838 at r3 (raw file):
// - int (converts to DInt) // - string (converts to DString) func TestingMakePrimaryIndexKey(desc *TableDescriptor, vals ...interface{}) (roachpb.Key, error) {
This should be declared in index_encoding_test.go so it can never be used in non-test code.
pkg/sql/sqlbase/index_encoding.go, line 890 at r3 (raw file):
// belongs to a table where its equivalence signature and all its interleave // ancestors' signatures can be found in validEquivSignatures. // validEquivSignatures: a map containing equivalence signatures of valid
remove the colon and turn this into a sentence, the colon just makes it look like you'll have a list of explanations but there is only one.
pkg/sql/sqlbase/index_encoding.go, line 1039 at r3 (raw file):
// /table/index/<parent-pk1>/.../<parent-pkX> // // We return the maximum number of <tokens> in this prefix.
We
-> This
These will be used to break up table.go in smaller pieces. Release note: None
Release note: None
Release note: None
Release note: None
…estutils Release note: None
Release note: None
Release note: None
Release note: None
Release note: None
Release note: None
Release note: None
d0c0125
to
13835d3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Bram for pushing me for the extra mile. I have split the commits to distinguish the movement and the documentation, as you recommended.
Reviewable status: complete! 1 of 0 LGTMs obtained
pkg/sql/distsqlplan/physical_plan.go, line 900 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
This seems out of place in this file. Unless this is the only place where it is used.
It is, clarified in commit message.
pkg/sql/sqlbase/column_type_encoding.go, line 930 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
this could use a comment
Done.
pkg/sql/sqlbase/column_type_encoding.go, line 1031 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
could use a comment here too while you're at it
Done.
pkg/sql/sqlbase/column_type_properties.go, line 48 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
some distinctions which are important at the
Done.
pkg/sql/sqlbase/column_type_properties.go, line 129 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
nit: remove this extra line, and add one after the switch to match the earlier blanks. Or just remove all blank lines, since the style changed again later.
I made them all consistent. Thanks for noticing.
pkg/sql/sqlbase/column_type_properties.go, line 255 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
Generally, it's advisable not to declare in a function where it is being used. Since that is likely to rot and doesn't provide much extra info.
For example, if we have a new use for it, should we add it here? If we remove that primary use of it, this comment also has to be changed.
(This comment applies to this whole file)
I think it's more subtle than that: the behavior of this function is constrained by what is required of information_schema, that is, future uses may not modify its semantics unless they double check the information_schema is not affected. Updated the comment accordingly.
pkg/sql/sqlbase/column_type_properties.go, line 266 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
the maximum is repeated
Done.
pkg/sql/sqlbase/column_type_properties.go, line 313 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
returns the implicit
Done.
pkg/sql/sqlbase/column_type_properties.go, line 349 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
If this is only used for testing, we should move it to column_type_properties_test.go to ensure it is not used in any main codepath.
Unfortunately Go does not allow us to place a function in a _test.go file if it's used in a different package.
Besides as explained in the comment it is also used by other functions in this file.
But you're right, this deserved a small improvement. Done.
pkg/sql/sqlbase/column_type_properties.go, line 409 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
instantiate an in-memory representation of values for the given
Done.
pkg/sql/sqlbase/column_type_properties.go, line 463 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
This sentence is confusing and needs work.
Done.
pkg/sql/sqlbase/column_type_properties.go, line 496 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
bit strings) and
Done.
pkg/sql/sqlbase/index_encoding.go, line 58 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
This comment should be with the first sentence, since it describes the function.
Done.
pkg/sql/sqlbase/index_encoding.go, line 246 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
Could use a comment.
Done.
pkg/sql/sqlbase/index_encoding.go, line 272 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
remove the
(see above)
and addNote:
orNote that
at the start
Done.
pkg/sql/sqlbase/index_encoding.go, line 690 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
lint: This comment seems like it is longer than our normal max.
Done.
pkg/sql/sqlbase/index_encoding.go, line 838 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
This should be declared in index_encoding_test.go so it can never be used in non-test code.
Again, unfortunately Go does not allow us to place a function in a _test.go file if it's used in a different package.
But I moved it to testutils.go
to clarify.
pkg/sql/sqlbase/index_encoding.go, line 890 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
remove the colon and turn this into a sentence, the colon just makes it look like you'll have a list of explanations but there is only one.
Done.
pkg/sql/sqlbase/index_encoding.go, line 1039 at r3 (raw file):
Previously, BramGruneir (Bram Gruneir) wrote…
We
->This
Done.
bors r+ |
bors r- |
Canceled |
Since it's super small and used only in one place. Release note: None
Release note: None
to EncodeDatumKeyAscending and EncodeDatumsKeyAscending, respectively. Also, add comments and move them to column_type_encoding.go. Release note: None
This was not well defined; the UNION code that required it really has particular semantics and it is thus best defined close to the implementation of UNION. Release note: None
Release note: None
Release note: None
72d8896
to
c534d68
Compare
bors r+ |
28943: sqlbase: add the missing comments and group functions by purpose r=knz a=knz First commits from #28942 and priors. Forked from #28690. The file `table.go` was getting unwieldy and was containing functions from different area of concern. This was making maintenance particularly burdensome. This patch splits the functionality in the following files: - `index_encoding.go`: index key prefixes, differences between primary and secondary encodings, how to organize columns in an index. - `column_type_encoding.go`: encoding of SQL values into bytes towards KV. - `column_type_properties.go`: conversions between various representations of types in the SQL layer; derivation of properties from SQL types. - `datum_alloc.go`: the `DatumAlloc` helper. Release note: None Co-authored-by: Raphael 'kena' Poss <knz@cockroachlabs.com>
Build succeeded |
29006: backport-2.1: fix the handling of SQL types r=knz a=knz Backport 1/1 commits from #28937. Backport 1/1 commits from #28942. Backport 17/17 commits from #28943. Backport 1/1 commits from #28944. Backport 1/1 commits from #28945. Backport 1/1 commits from #28949. Backport 2/2 commits from #28950. Backport 1/1 commits from #28951 (#28959). Backport 1/1 commits from #28952 (#28959). Backport 1/1 commits from #28955 (#28959). Backport 1/1 commits from #28959. Backport 1/1 commits from #28959. Backport 1/1 commits from #28690. cc @cockroachdb/release Co-authored-by: Raphael 'kena' Poss <knz@cockroachlabs.com>
29006: backport-2.1: fix the handling of SQL types r=knz a=knz Backport 1/1 commits from #28937. Backport 1/1 commits from #28942. Backport 17/17 commits from #28943. Backport 1/1 commits from #28944. Backport 1/1 commits from #28945. Backport 1/1 commits from #28949. Backport 2/2 commits from #28950. Backport 1/1 commits from #28951 (#28959). Backport 1/1 commits from #28952 (#28959). Backport 1/1 commits from #28955 (#28959). Backport 1/1 commits from #28959. Backport 1/1 commits from #28959. Backport 1/1 commits from #28690. cc @cockroachdb/release Co-authored-by: Raphael 'kena' Poss <knz@cockroachlabs.com>
First commits from #28942 and priors.
Forked from #28690.
The file
table.go
was getting unwieldy and was containing functionsfrom different area of concern. This was making maintenance
particularly burdensome.
This patch splits the functionality in the following files:
index_encoding.go
: index key prefixes, differences between primaryand secondary encodings, how to organize columns in an index.
column_type_encoding.go
: encoding of SQL values into bytestowards KV.
column_type_properties.go
: conversions between variousrepresentations of types in the SQL layer; derivation of properties
from SQL types.
datum_alloc.go
: theDatumAlloc
helper.Release note: None