Skip to content

Commit 4a48d67

Browse files
committed
Merge branch 'master' into develop
2 parents 5e90f23 + 4f66a31 commit 4a48d67

File tree

1,392 files changed

+139330
-56046
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,392 files changed

+139330
-56046
lines changed

.gitignore

+6-5
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,11 @@ src/sql/parser/sql_parser_oracle_utf8_mode_lex.c
152152
src/sql/parser/sql_parser_oracle_utf8_mode_lex.h
153153
src/sql/parser/sql_parser_oracle_utf8_mode_tab.c
154154
src/sql/parser/sql_parser_oracle_utf8_mode_tab.h
155-
src/sql/parser/sql_parser_oracle_latin1_mode_lex.c
156-
src/sql/parser/sql_parser_oracle_latin1_mode_lex.h
157-
src/sql/parser/sql_parser_oracle_latin1_mode_tab.c
158-
src/sql/parser/sql_parser_oracle_latin1_mode_tab.h
159-
src/sql/parser/non_reserved_keywords_oracle_latin1_mode.c
155+
src/sql/parser/sql_parser_oracle_single_byte_mode_lex.c
156+
src/sql/parser/sql_parser_oracle_single_byte_mode_lex.h
157+
src/sql/parser/sql_parser_oracle_single_byte_mode_tab.c
158+
src/sql/parser/sql_parser_oracle_single_byte_mode_tab.h
159+
src/sql/parser/non_reserved_keywords_oracle_single_byte_mode.c
160160
src/sql/parser/_gen_parser.output
161161
src/sql/parser/_gen_parser.error
162162
src/pl/parser/pl_parser_mysql_mode_lex.c
@@ -171,6 +171,7 @@ src/pl/parser/_gen_parser.error
171171
src/pl/parser/_gen_pl_parser.output
172172
src/pl/parser/pl_parser_mysql_mode.output
173173
src/pl/parser/pl_parser_oracle_mode.output
174+
src/share/inner_table/sys_package/system_package.cpp
174175

175176
############# close_modules #############
176177
close_modules/oracle_pl/pl/parser/*.output

cmake/Env.cmake

+6
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ if(OB_BUILD_CLOSE_MODULES)
117117
ob_define(OB_BUILD_ORACLE_PL ON)
118118
# dblink
119119
ob_define(OB_BUILD_DBLINK ON)
120+
# odps
121+
ob_define(OB_BUILD_CPP_ODPS ON)
120122
# 仲裁功能
121123
ob_define(OB_BUILD_ARBITRATION ON)
122124

@@ -172,6 +174,10 @@ if(OB_BUILD_DBLINK)
172174
add_definitions(-DOB_BUILD_DBLINK)
173175
endif()
174176

177+
if(OB_BUILD_CPP_ODPS)
178+
add_definitions(-DOB_BUILD_CPP_ODPS)
179+
endif()
180+
175181
# should not use initial-exec for tls-model if building OBCDC.
176182
if(NOT OB_BUILD_CDC)
177183
add_definitions(-DENABLE_INITIAL_EXEC_TLS_MODEL)

deps/init/oceanbase.el7.aarch64.deps

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ devdeps-s3-cpp-sdk-1.11.156-102023122011.el7.aarch64.rpm
3333
devdeps-protobuf-c-1.4.1-100000072023102410.el7.aarch64.rpm
3434
devdeps-roaringbitmap-croaring-3.0.0-42024042816.el7.aarch64.rpm
3535
devdeps-apache-arrow-9.0.0-302024052920.el7.aarch64.rpm
36+
# devdeps-apache-orc-1.8.3-202024072510.el7.aarch64.rpm
3637

3738
[tools]
3839
obdevtools-binutils-2.30-12022100413.el7.aarch64.rpm

deps/init/oceanbase.el7.x86_64.deps

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ devdeps-s3-cpp-sdk-1.11.156-102023122011.el7.x86_64.rpm
3636
devdeps-protobuf-c-1.4.1-100000062023102016.el7.x86_64.rpm
3737
devdeps-roaringbitmap-croaring-3.0.0-42024042816.el7.x86_64.rpm
3838
devdeps-apache-arrow-9.0.0-222024052223.el7.x86_64.rpm
39+
# devdeps-apache-orc-1.8.3-202024072510.el7.x86_64.rpm
3940

4041
[tools]
4142
obdevtools-binutils-2.30-12022100413.el7.x86_64.rpm

deps/init/oceanbase.el8.aarch64.deps

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ devdeps-s3-cpp-sdk-1.11.156-102023122011.el8.aarch64.rpm
3333
devdeps-protobuf-c-1.4.1-100000072023102410.el8.aarch64.rpm
3434
devdeps-roaringbitmap-croaring-3.0.0-42024042816.el8.aarch64.rpm
3535
devdeps-apache-arrow-9.0.0-322024052923.el8.aarch64.rpm
36+
# devdeps-apache-orc-1.8.3-202024072510.el8.aarch64.rpm
3637

3738
[tools]
3839
obdevtools-binutils-2.30-12022100413.el8.aarch64.rpm

deps/init/oceanbase.el8.x86_64.deps

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ devdeps-s3-cpp-sdk-1.11.156-102023122011.el8.x86_64.rpm
3535
devdeps-protobuf-c-1.4.1-100000062023102016.el8.x86_64.rpm
3636
devdeps-roaringbitmap-croaring-3.0.0-42024042816.el8.x86_64.rpm
3737
devdeps-apache-arrow-9.0.0-172024052218.el8.x86_64.rpm
38+
devdeps-odps-cpp-sdk-1.0.0-482024080517.el8.x86_64.rpm
39+
# devdeps-apache-orc-1.8.3-202024072510.el8.x86_64.rpm
3840

3941
[tools]
4042
obdevtools-binutils-2.30-12022100413.el8.x86_64.rpm

deps/init/oceanbase.el9.aarch64.deps

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ devdeps-s3-cpp-sdk-1.11.156-102023122011.el8.aarch64.rpm
3737
devdeps-protobuf-c-1.4.1-100000072023102410.el8.aarch64.rpm
3838
devdeps-roaringbitmap-croaring-3.0.0-42024042816.el8.aarch64.rpm
3939
devdeps-apache-arrow-9.0.0-322024052923.el8.aarch64.rpm
40+
# devdeps-apache-orc-1.8.3-202024072510.el8.aarch64.rpm
4041

4142
[deps-el9]
4243
devdeps-apr-1.6.5-232023090616.el9.aarch64.rpm target=el9

deps/init/oceanbase.el9.x86_64.deps

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ devdeps-s3-cpp-sdk-1.11.156-102023122011.el8.x86_64.rpm
3939
devdeps-protobuf-c-1.4.1-100000062023102016.el8.x86_64.rpm
4040
devdeps-apache-arrow-9.0.0-172024052218.el8.x86_64.rpm
4141
devdeps-roaringbitmap-croaring-3.0.0-42024042816.el8.x86_64.rpm
42+
# devdeps-apache-orc-1.8.3-202024072510.el8.x86_64.rpm
4243

4344
[deps-el9]
4445
devdeps-apr-1.6.5-232023090616.el9.x86_64.rpm target=el9

deps/oblib/src/CMakeLists.txt

+13
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ target_include_directories(
2121
${DEP_DIR}/include/apr-1/
2222
${DEP_DIR}/include/icu/common
2323
${DEP_DIR}/include/apache-arrow
24+
# ${DEP_DIR}/include/apache-orc
2425
${USSL_INCLUDE_DIRS}
2526
)
2627

@@ -208,6 +209,12 @@ target_link_libraries(oblib_base_base_base
208209
${DEP_DIR}/lib64/libarrow.a
209210
${DEP_DIR}/lib64/libparquet.a
210211
${DEP_DIR}/lib64/libarrow_bundled_dependencies.a
212+
# ${DEP_DIR}/lib64/liborc.a
213+
# ${DEP_DIR}/lib64/libsnappy.a
214+
# ${DEP_DIR}/lib64/libprotoc.a
215+
# ${DEP_DIR}/lib64/libprotobuf.a
216+
# ${DEP_DIR}/lib64/liblz4.a
217+
# ${DEP_DIR}/lib64/libzstd.a
211218
-L${DEP_DIR}/var/usr/lib64
212219
-L${DEP_DIR}/var/usr/lib
213220
-L${DEP_3RD_DIR}/usr/lib
@@ -237,6 +244,12 @@ target_link_libraries(oblib_base_base_base
237244
${DEP_DIR}/lib64/libarrow.a
238245
${DEP_DIR}/lib64/libparquet.a
239246
${DEP_DIR}/lib64/libarrow_bundled_dependencies.a
247+
# ${DEP_DIR}/lib64/liborc.a
248+
# ${DEP_DIR}/lib64/libsnappy.a
249+
# ${DEP_DIR}/lib64/libprotoc.a
250+
# ${DEP_DIR}/lib64/libprotobuf.a
251+
# ${DEP_DIR}/lib64/liblz4.a
252+
# ${DEP_DIR}/lib64/libzstd.a
240253
-L${DEP_DIR}/var/usr/lib64
241254
-L${DEP_DIR}/var/usr/lib
242255
-L${DEP_3RD_DIR}/usr/lib

deps/oblib/src/common/ob_field.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,13 @@ int ObParamedSelectItemCtx::deep_copy(const ObParamedSelectItemCtx &other, ObIAl
3131
LOG_WARN("invalid null allocator", K(ret));
3232
} else if (OB_FAIL(ob_write_string(*allocator, other.paramed_cname_, paramed_cname_))) {
3333
LOG_WARN("failed to write stirng", K(ret));
34+
} else if (OB_FAIL(param_str_offsets_.assign(other.param_str_offsets_))) {
35+
LOG_WARN("failed to deep copy param string offsets", K(ret));
36+
} else if (OB_FAIL(param_idxs_.assign(other.param_idxs_))) {
37+
LOG_WARN("failed to deep copy param idxs", K(ret));
38+
} else if (OB_FAIL(neg_param_idxs_.assign(other.neg_param_idxs_))) {
39+
LOG_WARN("failed to deep copy neg param idxs", K(ret));
3440
} else {
35-
param_str_offsets_ = other.param_str_offsets_;
36-
param_idxs_ = other.param_idxs_;
37-
neg_param_idxs_ = other.neg_param_idxs_;
3841
esc_str_flag_ = other.esc_str_flag_;
3942
need_check_dup_name_ = other.need_check_dup_name_;
4043
is_column_field_ = other.is_column_field_;

deps/oblib/src/common/ob_member.cpp

+57-38
Original file line numberDiff line numberDiff line change
@@ -86,73 +86,92 @@ void ObMember::reset_migrating()
8686
flag_ &= ~(1UL << MIGRATING_FLAG_BIT);
8787
}
8888

89-
OB_SERIALIZE_MEMBER(ObMember, server_, timestamp_, flag_);
90-
91-
bool ObReplicaMember::is_readonly_replica() const
89+
bool ObMember::is_columnstore() const
9290
{
93-
return REPLICA_TYPE_READONLY == replica_type_;
91+
return (flag_ >> COLUMNSTORE_FLAG_BIT) & 1U;
9492
}
9593

96-
void ObReplicaMember::reset()
94+
void ObMember::set_columnstore()
9795
{
98-
ObMember::reset();
99-
replica_type_ = REPLICA_TYPE_FULL;
100-
region_ = DEFAULT_REGION_NAME;
101-
memstore_percent_ = 100;
96+
flag_ |= (1UL << COLUMNSTORE_FLAG_BIT);
10297
}
10398

104-
bool ObReplicaMember::is_valid() const
99+
void ObMember::reset_columnstore()
105100
{
106-
return ObMember::is_valid()
107-
&& ObReplicaTypeCheck::is_replica_type_valid(replica_type_)
108-
&& !region_.is_empty()
109-
&& memstore_percent_ <= 100
110-
&& memstore_percent_ >= 0;
101+
flag_ &= ~(1UL << COLUMNSTORE_FLAG_BIT);
111102
}
112103

113-
common::ObReplicaType ObReplicaMember::get_replica_type() const
104+
OB_SERIALIZE_MEMBER(ObMember, server_, timestamp_, flag_);
105+
106+
bool ObReplicaMember::is_readonly_replica() const
114107
{
115-
return replica_type_;
108+
return REPLICA_TYPE_READONLY == replica_type_;
116109
}
117110

118-
int ObReplicaMember::set_replica_type(const common::ObReplicaType replica_type)
111+
int ObReplicaMember::init(
112+
const common::ObAddr &server,
113+
const int64_t timestamp,
114+
const common::ObReplicaType replica_type)
119115
{
120116
int ret = OB_SUCCESS;
121-
if (!ObReplicaTypeCheck::is_replica_type_valid(replica_type)) {
117+
reset();
118+
if (OB_UNLIKELY(!server.is_valid()
119+
|| !ObReplicaTypeCheck::is_replica_type_valid(replica_type))) {
122120
ret = OB_INVALID_ARGUMENT;
121+
COMMON_LOG(WARN, "invalid argument", K(ret), K(server), K(replica_type));
123122
} else {
123+
server_ = server;
124+
timestamp_ = timestamp;
124125
replica_type_ = replica_type;
126+
if (REPLICA_TYPE_COLUMNSTORE == replica_type) {
127+
ObMember::set_columnstore();
128+
}
125129
}
126130
return ret;
127131
}
128132

129-
const common::ObRegion &ObReplicaMember::get_region() const
133+
int ObReplicaMember::init(
134+
const ObMember &member,
135+
const common::ObReplicaType replica_type)
130136
{
131-
return region_;
137+
int ret = OB_SUCCESS;
138+
reset();
139+
if (OB_UNLIKELY(!member.is_valid()
140+
|| !ObReplicaTypeCheck::is_replica_type_valid(replica_type))) {
141+
ret = OB_INVALID_ARGUMENT;
142+
COMMON_LOG(WARN, "invalid argument", K(ret), K(member), K(replica_type));
143+
} else if (OB_FAIL(ObMember::assign(member))) {
144+
COMMON_LOG(WARN, "failed to assign member", K(ret), K(member));
145+
} else if (OB_FALSE_IT(replica_type_ = replica_type)) {
146+
// should never be here
147+
} else if (OB_UNLIKELY(! is_valid())) { // check flag_ and replica_type_ correct
148+
ret = OB_INVALID_ARGUMENT;
149+
COMMON_LOG(WARN, "invalid argument", K(ret), K(member), K(replica_type), KPC(this));
150+
}
151+
return ret;
132152
}
133153

134-
int ObReplicaMember::set_member(const ObMember &member)
154+
void ObReplicaMember::reset()
135155
{
136-
int ret = OB_SUCCESS;
156+
ObMember::reset();
157+
replica_type_ = REPLICA_TYPE_FULL;
158+
memstore_percent_ = 100;
159+
}
137160

138-
if (!member.is_valid()) {
139-
ret = OB_INVALID_ARGUMENT;
140-
COMMON_LOG(WARN, "invalid args", K(ret), K(member));
141-
} else if (OB_FAIL(ObMember::assign(member))) {
142-
COMMON_LOG(WARN, "failed to assign member", K(ret), K(member));
143-
}
144-
return ret;
161+
bool ObReplicaMember::is_valid() const
162+
{
163+
// columnstore bit is 1 if and only if replica_type is C
164+
bool is_flag_valid = (is_columnstore() == (REPLICA_TYPE_COLUMNSTORE == replica_type_));
165+
return ObMember::is_valid()
166+
&& ObReplicaTypeCheck::is_replica_type_valid(replica_type_)
167+
&& is_flag_valid
168+
&& memstore_percent_ <= 100
169+
&& memstore_percent_ >= 0;
145170
}
146171

147-
int ObReplicaMember::set_region(const common::ObRegion &region)
172+
common::ObReplicaType ObReplicaMember::get_replica_type() const
148173
{
149-
int ret = OB_SUCCESS;
150-
if (region.is_empty()) {
151-
ret = OB_INVALID_ARGUMENT;
152-
} else {
153-
region_ = region;
154-
}
155-
return ret;
174+
return replica_type_;
156175
}
157176

158177
ObReplicaMember &ObReplicaMember::operator=(const ObReplicaMember &rhs)

deps/oblib/src/common/ob_member.h

+29-39
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,16 @@ class ObMember
4949
void set_migrating();
5050
void reset_migrating();
5151

52+
bool is_columnstore() const;
53+
void set_columnstore();
54+
void reset_columnstore();
55+
5256
TO_STRING_KV(K_(server), K_(timestamp), K_(flag));
5357
TO_YSON_KV(OB_Y_(server), OB_ID(t), timestamp_, OB_Y_(flag));
5458
OB_UNIS_VERSION(1);
5559
protected:
5660
static const int64_t MIGRATING_FLAG_BIT = 1;
61+
static const int64_t COLUMNSTORE_FLAG_BIT = 0;
5762
common::ObAddr server_;
5863
int64_t timestamp_;
5964
int64_t flag_;
@@ -90,61 +95,46 @@ inline int member_to_string(const common::ObMember &member, ObSqlString &member_
9095
class ObReplicaMember : public ObMember
9196
{
9297
public:
98+
// default constructor
9399
ObReplicaMember()
94100
: ObMember(),
95101
replica_type_(REPLICA_TYPE_FULL),
96-
region_(DEFAULT_REGION_NAME),
97102
memstore_percent_(100)
98103
{}
104+
// construct with only server and timestamp, when we don't know or care about replica_type
105+
// TODO(cangming.zl): remove this constructor when DRTask do not use it.
99106
ObReplicaMember(const common::ObAddr &server,
100107
const int64_t timestamp)
101-
: ObMember(server, timestamp),
108+
: ObMember(ObMember(server, timestamp)),
102109
replica_type_(REPLICA_TYPE_FULL),
103-
region_(DEFAULT_REGION_NAME),
104-
memstore_percent_(100)
105-
{}
106-
ObReplicaMember(const ObMember &member)
107-
: ObMember(member),
108-
replica_type_(REPLICA_TYPE_FULL),
109-
region_(DEFAULT_REGION_NAME),
110-
memstore_percent_(100)
111-
{}
112-
/* After the subsequent type conversion code is completed, remove the constructor */
113-
ObReplicaMember(const common::ObAddr &server,
114-
const int64_t timestamp,
115-
const common::ObReplicaType replica_type)
116-
: ObMember(server, timestamp),
117-
replica_type_(replica_type),
118-
region_(DEFAULT_REGION_NAME),
119110
memstore_percent_(100)
120111
{}
112+
// construct with server, timestamp and replica_type,
113+
// this func will set columnstore flag if replica_type is C.
121114
ObReplicaMember(const common::ObAddr &server,
122115
const int64_t timestamp,
123116
const common::ObReplicaType replica_type,
124-
const int64_t memstore_percent)
125-
: ObMember(server, timestamp),
117+
const int64_t memstore_percent = 100)
118+
: ObMember(ObMember(server, timestamp)),
126119
replica_type_(replica_type),
127-
region_(DEFAULT_REGION_NAME),
128120
memstore_percent_(memstore_percent)
129-
{}
130-
ObReplicaMember(const common::ObAddr &server,
131-
const int64_t timestamp,
132-
const common::ObReplicaType replica_type,
133-
const common::ObRegion &region,
134-
const int64_t memstore_percent)
135-
: ObMember(server, timestamp),
136-
replica_type_(replica_type),
137-
region_(region),
138-
memstore_percent_(memstore_percent)
139-
{}
121+
{
122+
if (REPLICA_TYPE_COLUMNSTORE == replica_type) {
123+
ObMember::set_columnstore();
124+
}
125+
}
140126
public:
127+
// init with server, timestamp, replica_type.
128+
// this func will set columnstore flag if replica_type is C.
129+
int init(const common::ObAddr &server,
130+
const int64_t timestamp,
131+
const common::ObReplicaType replica_type);
132+
// init with existing member whose flag_ may have been set.
133+
// this function will check whether flag_ is consistent with replica_type.
134+
int init(const ObMember &member,
135+
const common::ObReplicaType replica_type);
141136
common::ObReplicaType get_replica_type() const;
142-
int set_replica_type(const common::ObReplicaType replica_type);
143-
const common::ObRegion &get_region() const;
144-
int set_region(const common::ObRegion &region);
145-
int set_member(const ObMember &member);
146137
int64_t get_memstore_percent() const { return memstore_percent_; }
147-
void set_memstore_percent(const int64_t memstore_percent) { memstore_percent_ = memstore_percent; }
148138
virtual void reset();
149139
virtual bool is_valid() const;
150140
virtual bool is_readonly_replica() const;
@@ -154,8 +144,8 @@ class ObReplicaMember : public ObMember
154144
OB_UNIS_VERSION(1);
155145
private:
156146
common::ObReplicaType replica_type_;
157-
common::ObRegion region_;
158-
int64_t memstore_percent_;
147+
int64_t memstore_percent_; // obsolate, only as placeholder
148+
common::ObRegion region_ = DEFAULT_REGION_NAME; // obsolate, only as placeholder
159149
};
160150
} // namespace common
161151
} // namespace oceanbase

0 commit comments

Comments
 (0)