1515// specific language governing permissions and limitations
1616// under the License.
1717
18- #include " util/block_compression.h"
18+ #include " deletion_vector_reader.h"
19+
1920#include " rapidjson/document.h"
2021#include " rapidjson/stringbuffer.h"
21-
22- #include " deletion_vector_reader.h"
22+ #include " util/block_compression.h"
2323
2424namespace doris {
25- namespace vectorized {
26- Status DeletionVectorReader::open () {
27- if (_is_opened) [[unlikely]] {
28- return Status::OK ();
29- }
25+ namespace vectorized {
26+ Status DeletionVectorReader::open () {
27+ if (_is_opened) [[unlikely]] {
28+ return Status::OK ();
29+ }
30+
31+ _init_system_properties ();
32+ _init_file_description ();
33+ RETURN_IF_ERROR (_create_file_reader ());
3034
31- _init_system_properties ();
32- _init_file_description ();
33- RETURN_IF_ERROR (_create_file_reader ());
35+ _file_size = _file_reader->size ();
36+ _is_opened = true ;
37+ return Status::OK ();
38+ }
3439
35- _file_size = _file_reader->size ();
36- _is_opened = true ;
37- return Status::OK ();
38- }
40+ Status DeletionVectorReader::read_at (size_t offset, Slice result) {
41+ if (UNLIKELY (_io_ctx && _io_ctx->should_stop )) {
42+ return Status::EndOfFile (" stop read." );
43+ }
44+ size_t bytes_read = 0 ;
45+ RETURN_IF_ERROR (_file_reader->read_at (offset, result, &bytes_read, _io_ctx));
46+ if (bytes_read != result.size ) [[unlikely]] {
47+ return Status::IOError (" Failed to read fully at offset {}, expected {}, got {}" , offset,
48+ result.size , bytes_read);
49+ }
50+ return Status::OK ();
51+ }
3952
40- Status DeletionVectorReader::read_at (size_t offset, Slice result) {
41- size_t bytes_read = 0 ;
42- RETURN_IF_ERROR (_file_reader->read_at (offset, result, &bytes_read));
43- if (bytes_read != result.size ) [[unlikely]] {
44- return Status::IOError (" Failed to read fully at offset {}, expected {}, got {}" ,
45- offset, result.size , bytes_read);
46- }
47- return Status::OK ();
48- }
53+ Status DeletionVectorReader::_create_file_reader () {
54+ if (UNLIKELY (_io_ctx && _io_ctx->should_stop )) {
55+ return Status::EndOfFile (" stop read." );
56+ }
4957
50- Status DeletionVectorReader::_create_file_reader () {
51- _file_description.mtime = _range.__isset .modification_time ? _range.modification_time : 0 ;
52- io::FileReaderOptions reader_options =
53- FileFactory::get_reader_options (_state, _file_description);
54- _file_reader = DORIS_TRY (io::DelegateReader::create_file_reader (
55- _profile, _system_properties, _file_description, reader_options,
56- io::DelegateReader::AccessMode::RANDOM, _io_ctx));
57- return Status::OK ();
58- }
58+ _file_description.mtime = _range.__isset .modification_time ? _range.modification_time : 0 ;
59+ io::FileReaderOptions reader_options =
60+ FileFactory::get_reader_options (_state, _file_description);
61+ _file_reader = DORIS_TRY (io::DelegateReader::create_file_reader (
62+ _profile, _system_properties, _file_description, reader_options,
63+ io::DelegateReader::AccessMode::RANDOM, _io_ctx));
64+ return Status::OK ();
65+ }
5966
60- void DeletionVectorReader::_init_file_description () {
61- _file_description.path = _range.path ;
62- _file_description.file_size = _range.__isset .file_size ? _range.file_size : -1 ;
63- if (_range.__isset .fs_name ) {
64- _file_description.fs_name = _range.fs_name ;
65- }
66- }
67+ void DeletionVectorReader::_init_file_description () {
68+ _file_description.path = _range.path ;
69+ _file_description.file_size = _range.__isset .file_size ? _range.file_size : -1 ;
70+ if (_range.__isset .fs_name ) {
71+ _file_description.fs_name = _range.fs_name ;
72+ }
73+ }
6774
68- void DeletionVectorReader::_init_system_properties () {
69- if (_range.__isset .file_type ) {
70- // for compatibility
71- _system_properties.system_type = _range.file_type ;
72- } else {
73- _system_properties.system_type = _params.file_type ;
74- }
75- _system_properties.properties = _params.properties ;
76- _system_properties.hdfs_params = _params.hdfs_params ;
77- if (_params.__isset .broker_addresses ) {
78- _system_properties.broker_addresses .assign (_params.broker_addresses .begin (),
79- _params.broker_addresses .end ());
80- }
81- }
75+ void DeletionVectorReader::_init_system_properties () {
76+ if (_range.__isset .file_type ) {
77+ // for compatibility
78+ _system_properties.system_type = _range.file_type ;
79+ } else {
80+ _system_properties.system_type = _params.file_type ;
81+ }
82+ _system_properties.properties = _params.properties ;
83+ _system_properties.hdfs_params = _params.hdfs_params ;
84+ if (_params.__isset .broker_addresses ) {
85+ _system_properties.broker_addresses .assign (_params.broker_addresses .begin (),
86+ _params.broker_addresses .end ());
87+ }
88+ }
8289
83- } // namespace iceberg
90+ } // namespace vectorized
8491} // namespace doris
0 commit comments