summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Krivonos <sergei.krivonos@mariadb.com>2021-11-09 20:06:22 +0200
committerSergei Krivonos <sergei.krivonos@mariadb.com>2021-11-10 20:53:24 +0200
commit94ef277b5b98afb25400fdb1b3b4917ef16172da (patch)
tree3c3745590428068f3ae81b6fae11a7cfb17cbb22
parent04ad98b5001eafea537d3c655d0021ffb2f5ef06 (diff)
downloadmariadb-git-94ef277b5b98afb25400fdb1b3b4917ef16172da.tar.gz
MDEV-23766: fix by assert (Windows)
-rw-r--r--sql/my_json_writer.h20
-rw-r--r--sql/opt_range.cc7
2 files changed, 13 insertions, 14 deletions
diff --git a/sql/my_json_writer.h b/sql/my_json_writer.h
index c8bd7f5b8fa..7d209501a87 100644
--- a/sql/my_json_writer.h
+++ b/sql/my_json_writer.h
@@ -24,7 +24,7 @@
#ifdef JSON_WRITER_UNIT_TEST
#include "sql_string.h"
// Also, mock objects are defined in my_json_writer-t.cc
-#define VALIDITY_ASSERT(x) if ((!x)) this->invalid_json= true;
+#define VALIDITY_ASSERT(x) if (!(x)) this->invalid_json= true;
#else
#include "sql_select.h"
#define VALIDITY_ASSERT(x) DBUG_ASSERT(x)
@@ -356,6 +356,9 @@ public:
/* A common base for Json_writer_object and Json_writer_array */
class Json_writer_struct
{
+ Json_writer_struct(const Json_writer_struct&)= delete;
+ Json_writer_struct& operator=(const Json_writer_struct&)= delete;
+
protected:
Json_writer* my_writer;
Json_value_helper context;
@@ -394,18 +397,15 @@ private:
my_writer->add_member(name);
}
public:
- explicit Json_writer_object(THD *thd)
- : Json_writer_struct(thd)
- {
- if (unlikely(my_writer))
- my_writer->start_object();
- }
-
- explicit Json_writer_object(THD* thd, const char *str)
+ explicit Json_writer_object(THD* thd, const char *str= nullptr)
: Json_writer_struct(thd)
{
if (unlikely(my_writer))
- my_writer->add_member(str).start_object();
+ {
+ if (str)
+ my_writer->add_member(str);
+ my_writer->start_object();
+ }
}
~Json_writer_object()
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 122b00f4d57..47bf8f1682f 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -5101,9 +5101,8 @@ TABLE_READ_PLAN *get_best_disjunct_quick(PARAM *param, SEL_IMERGE *imerge,
n_child_scans)))
DBUG_RETURN(NULL);
- Json_writer_object trace_best_disjunct = named_trace
- ? Json_writer_object(thd, "best_disjunct_quick")
- : Json_writer_object(thd);
+ const char* trace_best_disjunct_obj_name= named_trace ? "best_disjunct_quick" : nullptr;
+ Json_writer_object trace_best_disjunct(thd, trace_best_disjunct_obj_name);
Json_writer_array to_merge(thd, "indexes_to_merge");
/*
Collect best 'range' scan for each of disjuncts, and, while doing so,
@@ -5649,7 +5648,7 @@ void print_keyparts(THD *thd, KEY *key, uint key_parts)
DBUG_ASSERT(thd->trace_started());
KEY_PART_INFO *part= key->key_part;
- Json_writer_array keyparts= Json_writer_array(thd, "keyparts");
+ Json_writer_array keyparts(thd, "keyparts");
for(uint i= 0; i < key_parts; i++, part++)
keyparts.add(part->field->field_name);
}