[FEAT MERGE] JSON/XML phase2 and JSON Partial Update

Co-authored-by: Carrot-77 <1012982871@qq.com>
Co-authored-by: wu-xingying <729224612@qq.com>
This commit is contained in:
shadowao
2024-04-12 10:46:02 +00:00
committed by ob-robot
parent fbfcd0feaa
commit 4afa70a218
254 changed files with 55981 additions and 10150 deletions

View File

@ -99,15 +99,14 @@ public:
return ret;
}
int get_ns_value(ObStack<ObIMulModeBase*>& stk, ObString &ns_value)
int get_ns_value(ObStack<ObIMulModeBase*>& stk, ObString &ns_value, ObIMulModeBase* extend)
{
return 0;
}
int get_ns_value(const ObString& prefix, ObString& ns_value) {
int get_ns_value(const ObString& prefix, ObString& ns_value, int& ans_idx) {
return 0;
}
bool is_equal_node(const ObIMulModeBase* other) {
return false;
}
@ -116,6 +115,9 @@ public:
return false;
}
virtual bool check_extend() { return false; }
virtual bool check_if_defined_ns() { return false; }
int get_value(ObString& value, int64_t index = -1) override
{
INIT_SUCC(ret);
@ -139,6 +141,10 @@ public:
virtual int64_t attribute_size() { return 0; }
virtual int64_t attribute_count() { return 0; }
virtual uint16_t get_encoding_flag() {return 0;};
virtual uint16_t has_xml_decl() {return 0;};
virtual uint16_t is_unparse() {return 0;};
virtual ObIMulModeBase* get_attribute_handle() {return nullptr;}
ObString get_version() { return ObString(); }
ObString get_prefix() { return ObString(); }
ObString get_encoding() { return ObString(); }
@ -878,21 +884,21 @@ TEST_F(TestXmlTreeBase, reader)
ASSERT_EQ(ObXmlUtil::create_mulmode_tree_context(&allocator, ctx), OB_SUCCESS);
ObXmlElement sub1_1(ObMulModeNodeType::M_DOCUMENT, ctx);
sub1_1.set_key(sub_key1);
sub1_1.set_xml_key(sub_key1);
sub1_1.set_prefix(sub_value1);
ObXmlElement sub1_2(ObMulModeNodeType::M_DOCUMENT, ctx);
sub1_2.set_key(sub_key2);
sub1_2.set_xml_key(sub_key2);
sub1_2.set_prefix(sub_value2);
ObXmlElement sub1_3(ObMulModeNodeType::M_DOCUMENT, ctx);
sub1_3.set_key(sub_key3);
sub1_3.set_xml_key(sub_key3);
sub1_3.set_prefix(sub_value3);
ObXmlElement sub1(ObMulModeNodeType::M_DOCUMENT, ctx);
sub1.set_key(key1);
sub1.set_xml_key(key1);
sub1.set_prefix(value1);
// sub children
@ -903,32 +909,32 @@ TEST_F(TestXmlTreeBase, reader)
ObXmlElement sub2(ObMulModeNodeType::M_DOCUMENT, ctx);
sub2.set_key(key2);
sub2.set_xml_key(key2);
sub2.set_prefix(value2);
ObXmlElement sub3_1(ObMulModeNodeType::M_DOCUMENT, ctx);
sub3_1.set_key(key3);
sub3_1.set_xml_key(key3);
sub3_1.set_prefix(value3_1);
ObXmlElement sub3_2(ObMulModeNodeType::M_DOCUMENT, ctx);
sub3_2.set_key(key3);
sub3_2.set_xml_key(key3);
sub3_2.set_prefix(value3_2);
ObXmlElement sub3(ObMulModeNodeType::M_DOCUMENT, ctx);
sub3.set_key(key3);
sub3.set_xml_key(key3);
sub3.set_prefix(value3);
ObXmlElement sub4(ObMulModeNodeType::M_DOCUMENT, ctx);
sub4.set_key(key4);
sub4.set_xml_key(key4);
sub4.set_prefix(value4);
ObXmlElement sub5(ObMulModeNodeType::M_DOCUMENT, ctx);
sub5.set_key(key5);
sub5.set_xml_key(key5);
sub5.set_prefix(value5);
ObXmlElement element(ObMulModeNodeType::M_DOCUMENT, ctx);
sub5.set_key(element_key);
sub5.set_xml_key(element_key);
sub5.set_prefix(element_value);
ASSERT_EQ(element.add_element(&sub1), OB_SUCCESS);
@ -1098,22 +1104,22 @@ TEST_F(TestXmlTreeBase, lazy_sort)
ASSERT_EQ(ObXmlUtil::create_mulmode_tree_context(&allocator, ctx), OB_SUCCESS);
ObXmlElement sub1_1(ObMulModeNodeType::M_DOCUMENT, ctx);
sub1_1.set_key(sub_key1);
sub1_1.set_xml_key(sub_key1);
sub1_1.set_prefix(sub_value1);
ObXmlElement sub1_2(ObMulModeNodeType::M_DOCUMENT, ctx);
sub1_2.set_key(sub_key2);
sub1_2.set_xml_key(sub_key2);
sub1_2.set_prefix(sub_value2);
ObXmlElement sub1_3(ObMulModeNodeType::M_DOCUMENT, ctx);
sub1_3.set_key(sub_key3);
sub1_3.set_xml_key(sub_key3);
sub1_3.set_prefix(sub_value3);
ObXmlElement sub1(ObMulModeNodeType::M_DOCUMENT, ctx);
sub1.alter_member_sort_policy(false);
sub1.set_key(key1);
sub1.set_xml_key(key1);
sub1.set_prefix(value1);
// sub children
@ -1129,33 +1135,33 @@ TEST_F(TestXmlTreeBase, lazy_sort)
ObXmlElement sub2(ObMulModeNodeType::M_DOCUMENT, ctx);
sub2.set_key(key2);
sub2.set_xml_key(key2);
sub2.set_prefix(value2);
ObXmlElement sub3_1(ObMulModeNodeType::M_DOCUMENT, ctx);
sub3_1.set_key(key3);
sub3_1.set_xml_key(key3);
sub3_1.set_prefix(value3_1);
ObXmlElement sub3_2(ObMulModeNodeType::M_DOCUMENT, ctx);
sub3_2.set_key(key3);
sub3_2.set_xml_key(key3);
sub3_2.set_prefix(value3_2);
ObXmlElement sub3(ObMulModeNodeType::M_DOCUMENT, ctx);
sub3.set_key(key3);
sub3.set_xml_key(key3);
sub3.set_prefix(value3);
ObXmlElement sub4(ObMulModeNodeType::M_DOCUMENT, ctx);
sub4.set_key(key4);
sub4.set_xml_key(key4);
sub4.set_prefix(value4);
ObXmlElement sub5(ObMulModeNodeType::M_DOCUMENT, ctx);
sub5.set_key(key5);
sub5.set_xml_key(key5);
sub5.set_prefix(value5);
ObXmlElement element(ObMulModeNodeType::M_DOCUMENT, ctx);
element.alter_member_sort_policy(false);
sub5.set_key(element_key);
sub5.set_xml_key(element_key);
sub5.set_prefix(element_value);
ASSERT_EQ(element.add_element(&sub5), OB_SUCCESS);