| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also make input string reference const
<https://github.com/ydb-platform/ydb/issues/12306>
Make input string reference const
Make sure returned TStringBuffers do not change during splitter lifetime
splitter.Consume() возвращает TStringBuf.
Если в колонке есть ескейпинг кавычек, вся колонка обрамлена двойными кавычками (`"`), а внутри для ескейпинга двойных кавычек используются две идущие подряд двойные кавычки (`""`).
В таком случае вернуть TStringBuf, ссылающийся на кусок входящего TString, не получится, т.к. нужной подстроки в нем не существует.
Для этого используется мембер TVector\<TStringbuf\> CustomStrings. В него накидываются нужные кусочки из исходной строки и в конце складываются в мембер-строку TString CustomString
Например, из строки `"abc""cde""efg"` копились кусочки `abc"`, `cde"`, `efg` и в конце склеивались.
И возвращался TStringBuf из этой строки-мембера.
Проблема в том, что если в другой колонке той же строки также встречались кавычки с ескейпингом, эта строка-мембер CustomString очищалась. При том, что на неё всё еще ссылался возвращённый ранее TStringBuf.
В итоге "предыдущий" TStringBuf либо начинал ссылаться на часть новой строки, если новая строка была длиннее, либо на часть новой строки \+ рандомный набор байт в памяти, если новая строка оказывалась короче.
Фикс в том, чтобы хранить все строки, сгенерённые сплиттером, всё время жизни сплиттера
commit_hash:aa4957e1d8030cd48d06eaa16a7ad61e878348f8
|
|\| |
|
| |
| |
| |
| | |
commit_hash:06fd6ffa9ec768168c34547fcdfb15e2f9ad75f8
|
| |
| |
| |
| | |
commit_hash:39518295f157c161f6c0a25a1df24b32a6cff296
|
| |
| |
| |
| | |
commit_hash:7b57398460fb850349f35c543b8cef63f6490b6b
|
| |
| |
| |
| | |
commit_hash:50f729d3716d8b1f5b852cfc008e228172fb79c4
|
| |
| |
| |
| | |
commit_hash:87c6f9898873ec96e4aa9dc4c7df86e67a11e313
|
|\| |
|
| |
| |
| |
| | |
commit_hash:7dbe58a7a8a7980241f20a2e53ace94a62c541df
|
|\| |
|
| |
| |
| |
| | |
commit_hash:97159680fa733af4212c094e917bc78a47eb0c15
|
| |
| |
| |
| | |
commit_hash:cbf5ab65e5ba1b2d286f974a6b6b463ed152b381
|
| |
| |
| |
| | |
commit_hash:2404d2a79d4961dedf17f7d0cbec38bcabb78014
|
|\| |
|
| |
| |
| |
| | |
commit_hash:6f0d83406a245425d156e961c3519d5bd822857a
|
| |
| |
| |
| | |
commit_hash:c0112c0409a0972eb859b32a014980020df7ce0a
|
|\| |
|
| |
| |
| |
| | |
commit_hash:fac37a51fb5b0fdd660beccb43a2a8861308e39f
|
| |
| |
| |
| | |
commit_hash:320ab736dea5dae74e2ec8c344fb915be4c4df99
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
TErrorAttribute from yt/core
Plan:
1) Remove `IAttributedDictionary` type from the public API. \+
2) Remove `Set` method from public API in favor of `operator<<=`. \+
3) Adopt `ConvertTo<T>` (or other name) CPO with proper extension into `NYT::NYson::ConvertTo` from `yt/core`.
4) Use CPO from (3) to eliminate direct dependency on `yt/core` of `Get/Find` methods from attributes API.
5) Adopt `ConvertToYsonString` (or other name) CPO with proper extension into `yt/core` customisations.
6) Use CPO from (5) to eliminate direct dependency on `yt/core` of `TErrorAttribute` ctor.
7) Swap attributes implementation to the one which doesn’t use `IAttributeDictionary`.
8) At this point `stripped_error*` can be moved to library/cpp/yt and so can recursively dependant on THROW macro methods `Get/Find/…`.
9) Adjust CPO’s to work with `std::string` instead of `TYsonString` assuming text format to be used (maybe `TString` for now).
10) Remove dep of `library/cpp/yt/error` on `yson` entirely.
This pr addresses 5-6 steps of plan. Below is a brief explanation of design decisions. We also expressed everything related to key-value code in terms of aliases of `TErrorAttribute` so that later we could make a relatively simple switch to `std::string`. We expect to do steps 7-8 in the next pull request as everything should be ready
commit_hash:de9feca2bd24d823b33d904ef0fa5f4856f9b020
|
| |
| |
| |
| | |
commit_hash:60e005cdf76d5bff2a370a6b8f35ef4f6792f414
|
|\| |
|
| |
| |
| |
| | |
commit_hash:81fb555c66d5ab8c5c260658be43bb7b61ab2622
|
|\| |
|
| |
| |
| |
| | |
commit_hash:d73b9a2f472fbcf5f3ebc54787a964c15fba2504
|
|\| |
|
| |
| |
| |
| | |
commit_hash:bbf24592c367fa158fbc53e041fe367374d0750e
|
| |
| |
| |
| | |
commit_hash:af73a3ea146e2eb6141cb19913e534d75ba573fd
|
|\| |
|
| |
| |
| |
| | |
commit_hash:9c2ada5b95be3f810d2750406d74d839bd2598ff
|
|\| |
|
| |
| |
| |
| | |
commit_hash:4591e7a8126c65672359f0cdee64ad789ca9ae74
|
| |
| |
| |
| | |
commit_hash:89b2dfdd1bb0d38b205f23744652b1db522e06c4
|
| |
| |
| |
| | |
commit_hash:1bcd4492a3f6a28a2be8e27b5660e98cc8e4c8d0
|
| |
| |
| |
| | |
commit_hash:1c25da3ce2125ca4d8d1e3e026ef0d2a6d0aa355
|
| |
| |
| |
| | |
commit_hash:b2cf3b80a36e4867b03a79f3e2c552f19920016f
|
| |
| |
| |
| | |
commit_hash:804530d1ee861ff42d7d8cad25d9f569b4feaacf
|
| |
| |
| |
| | |
commit_hash:a5695d6abae3e01238ce9328956579759caca454
|
| |
| |
| |
| | |
commit_hash:b6c853aa9dfce004915ca07c10eead963195eb97
|
| |
| |
| |
| | |
commit_hash:5ce8019253cdb971d1af36350e3efa3a4ec8545c
|
| |
| |
| |
| | |
commit_hash:a2bd81b4ecf17197f540e5096040491a78428687
|
| |
| |
| |
| | |
commit_hash:d8d2d7bd705c50833ff6e4b03fda17f1c97ca3b7
|
|\| |
|
| |
| |
| |
| |
| | |
[nodiff:caesar]
commit_hash:93eef00a7132e68e727aa1f4028616db6522d03c
|
| |
| |
| |
| | |
commit_hash:7313c6e8079a9821476cae610f095855b5c60c93
|
|\| |
|
| |
| |
| |
| | |
commit_hash:e7480dc4037b4e009ef6dcc824697e6e89c5bfe1
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Y_ASSUME and Y_UNREACHABLE macros are platform-independent ways to
give a hint for a compiler about some value or state. Compilier may
use that hint for optimization. On the other hand if the hint is
wrong it may lead to undefined behavior.
YT_ASSUME and YT_UNREACHABLE are wrappers around Y_ASSUME and
Y_UNREACHABLE that actually check that the hint is correct in
debug build. That introduces some code safety and at the same time
allows certain optimization in optimized build.
commit_hash:2d0969361910a10a870bae226d838d494e656edb
|