summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <sanja@askmonty.org>2012-12-23 22:17:22 +0200
committerunknown <sanja@askmonty.org>2012-12-23 22:17:22 +0200
commit082ff5931770ed70df0ec1e85f81fa880a4d9e62 (patch)
tree4579610f7b0a509a97226da3cfc65ec26a018281
parent40ae63dd65fb9e812f29d3520acb0ba6b64d3005 (diff)
downloadmariadb-git-082ff5931770ed70df0ec1e85f81fa880a4d9e62.tar.gz
Post-post review fixes.
-rw-r--r--include/ma_dyncol.h20
-rw-r--r--mysql-test/r/cassandra.result54
-rw-r--r--mysql-test/r/dyncol.result26
-rw-r--r--mysys/ma_dyncol.c60
-rw-r--r--sql/item_func.h2
-rw-r--r--sql/item_strfunc.cc12
-rw-r--r--sql/item_strfunc.h8
7 files changed, 100 insertions, 82 deletions
diff --git a/include/ma_dyncol.h b/include/ma_dyncol.h
index 78d3f15978c..7f888759207 100644
--- a/include/ma_dyncol.h
+++ b/include/ma_dyncol.h
@@ -34,13 +34,6 @@
#include <mysql_time.h>
/*
- Max length for data in a dynamic colums. This comes from how the
- how the offset are stored.
-*/
-#define MAX_DYNAMIC_COLUMN_LENGTH 0X1FFFFFFFL
-#define MAX_DYNAMIC_COLUMN_LENGTH_NM 0XFFFFFFFFFL
-
-/*
Limits of implementation
*/
#define MAX_TOTAL_NAME_LENGTH 65535
@@ -101,7 +94,6 @@ struct st_dynamic_column_value
typedef struct st_dynamic_column_value DYNAMIC_COLUMN_VALUE;
-/* old functions (deprecated) */
#ifdef MADYNCOL_DEPRECATED
enum enum_dyncol_func_result
dynamic_column_create(DYNAMIC_COLUMN *str,
@@ -168,7 +160,7 @@ mariadb_dyncol_exists_named(DYNAMIC_COLUMN *str, LEX_STRING *name);
/* List of not NULL columns */
enum enum_dyncol_func_result
-mariadb_dyncol_list(DYNAMIC_COLUMN *org, DYNAMIC_ARRAY *array_of_uint);
+mariadb_dyncol_list(DYNAMIC_COLUMN *str, uint *count, uint **nums);
enum enum_dyncol_func_result
mariadb_dyncol_list_named(DYNAMIC_COLUMN *str, uint *count, LEX_STRING **names);
@@ -213,17 +205,11 @@ int mariadb_dyncol_column_cmp_named(const LEX_STRING *s1, const LEX_STRING *s2);
enum enum_dyncol_func_result
mariadb_dyncol_column_count(DYNAMIC_COLUMN *str, uint *column_count);
-/***************************************************************************
- Internal functions, don't use if you don't know what you are doing...
-***************************************************************************/
-
-#define mariadb_dyncol_reassociate(V,P,L, A) dynstr_reassociate((V),(P),(L),(A))
-
-#define dyncol_value_init(V) (V)->type= DYN_COL_NULL
+#define mariadb_dyncol_value_init(V) (V)->type= DYN_COL_NULL
/*
Prepare value for using as decimal
*/
-void dynamic_column_prepare_decimal(DYNAMIC_COLUMN_VALUE *value);
+void mariadb_dyncol_prepare_decimal(DYNAMIC_COLUMN_VALUE *value);
#endif
diff --git a/mysql-test/r/cassandra.result b/mysql-test/r/cassandra.result
index b5ff3194480..d11e2f66729 100644
--- a/mysql-test/r/cassandra.result
+++ b/mysql-test/r/cassandra.result
@@ -448,7 +448,7 @@ CREATE TABLE t2 (rowkey bigint PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes)
insert into t2 values (1, column_create("dyn1", 1, "dyn2", "two"));
select rowkey, column_json(dyn) from t2;
rowkey column_json(dyn)
-1 [{"dyn1":"1"},{"dyn2":"two"}]
+1 {"dyn1":"1","dyn2":"two"}
delete from t2;
drop table t2;
# bigint
@@ -457,8 +457,8 @@ insert into t1 values (1, column_create("dyn1", 1, "dyn2", "two", 'a', 254324));
insert into t1 values (2, column_create("dyn1", 1, "dyn2", "two", 'a', 2543));
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"a":254324},{"dyn1":"1"},{"dyn2":"two"}]
-2 [{"a":2543},{"dyn1":"1"},{"dyn2":"two"}]
+1 {"a":254324,"dyn1":"1","dyn2":"two"}
+2 {"a":2543,"dyn1":"1","dyn2":"two"}
delete from t1;
drop table t1;
# int
@@ -467,8 +467,8 @@ insert into t1 values (1, column_create("dyn1", 1, "dyn2", "two", 'intcol', 2543
insert into t1 values (2, column_create("dyn1", 1, "dyn2", "two", 'intcol', 2543));
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"dyn1":"1"},{"dyn2":"two"},{"intcol":254324}]
-2 [{"dyn1":"1"},{"dyn2":"two"},{"intcol":2543}]
+1 {"dyn1":"1","dyn2":"two","intcol":254324}
+2 {"dyn1":"1","dyn2":"two","intcol":2543}
delete from t1;
drop table t1;
# timestamp
@@ -477,8 +477,8 @@ insert into t1 values (1, column_create("dyn1", 1, "dyn2", "two", 'datecol', 254
insert into t1 values (2, column_create("dyn1", 1, "dyn2", "two", 'datecol', 2543));
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"dyn1":"1"},{"dyn2":"two"},{"datecol":254324}]
-2 [{"dyn1":"1"},{"dyn2":"two"},{"datecol":2543}]
+1 {"dyn1":"1","dyn2":"two","datecol":254324}
+2 {"dyn1":"1","dyn2":"two","datecol":2543}
delete from t1;
drop table t1;
# boolean
@@ -487,47 +487,47 @@ insert into t1 values (1, column_create("dyn1", 1, "dyn2", "two", 'boolcol', 254
insert into t1 values (2, column_create("dyn1", 1, "dyn2", "two", 'boolcol', 0));
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"dyn1":"1"},{"dyn2":"two"},{"boolcol":1}]
-2 [{"dyn1":"1"},{"dyn2":"two"},{"boolcol":0}]
+1 {"dyn1":"1","dyn2":"two","boolcol":1}
+2 {"dyn1":"1","dyn2":"two","boolcol":0}
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"dyn1":"1"},{"dyn2":"two"},{"boolcol":1}]
-2 [{"dyn1":"1"},{"dyn2":"two"},{"boolcol":0}]
+1 {"dyn1":"1","dyn2":"two","boolcol":1}
+2 {"dyn1":"1","dyn2":"two","boolcol":0}
update t1 set dyn=column_add(dyn, "dyn2", null, "dyn3", "3");
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"dyn1":"1"},{"dyn3":"3"},{"boolcol":1}]
-2 [{"dyn1":"1"},{"dyn3":"3"},{"boolcol":0}]
+1 {"dyn1":"1","dyn3":"3","boolcol":1}
+2 {"dyn1":"1","dyn3":"3","boolcol":0}
update t1 set dyn=column_add(dyn, "dyn1", null) where rowkey= 1;
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"dyn3":"3"},{"boolcol":1}]
-2 [{"dyn1":"1"},{"dyn3":"3"},{"boolcol":0}]
+1 {"dyn3":"3","boolcol":1}
+2 {"dyn1":"1","dyn3":"3","boolcol":0}
update t1 set dyn=column_add(dyn, "dyn3", null, "a", "ddd");
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"a":"ddd"},{"boolcol":1}]
-2 [{"a":"ddd"},{"dyn1":"1"},{"boolcol":0}]
+1 {"a":"ddd","boolcol":1}
+2 {"a":"ddd","dyn1":"1","boolcol":0}
update t1 set dyn=column_add(dyn, "12345678901234", "ddd");
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"a":"ddd"},{"boolcol":1},{"12345678901234":"ddd"}]
-2 [{"a":"ddd"},{"dyn1":"1"},{"boolcol":0},{"12345678901234":"ddd"}]
+1 {"a":"ddd","boolcol":1,"12345678901234":"ddd"}
+2 {"a":"ddd","dyn1":"1","boolcol":0,"12345678901234":"ddd"}
update t1 set dyn=column_add(dyn, "12345678901234", null);
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"a":"ddd"},{"boolcol":1}]
-2 [{"a":"ddd"},{"dyn1":"1"},{"boolcol":0}]
+1 {"a":"ddd","boolcol":1}
+2 {"a":"ddd","dyn1":"1","boolcol":0}
update t1 set dyn=column_add(dyn, 'boolcol', null) where rowkey= 2;
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"a":"ddd"},{"boolcol":1}]
-2 [{"a":"ddd"},{"dyn1":"1"}]
+1 {"a":"ddd","boolcol":1}
+2 {"a":"ddd","dyn1":"1"}
update t1 set rowkey= 3, dyn=column_add(dyn, "dyn1", null, 'boolcol', 0) where rowkey= 2;
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-1 [{"a":"ddd"},{"boolcol":1}]
-3 [{"a":"ddd"},{"boolcol":0}]
+1 {"a":"ddd","boolcol":1}
+3 {"a":"ddd","boolcol":0}
delete from t1;
drop table t1;
CREATE TABLE t1 (rowkey varchar(10) PRIMARY KEY, dyn blob DYNAMIC_COLUMN_STORAGE=yes) ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family = 'cfd1';
@@ -567,14 +567,14 @@ ENGINE=CASSANDRA thrift_host='localhost' keyspace='mariadbtest2' column_family =
INSERT INTO t1 VALUES(2,column_create("ab","ab"));
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-2 [{"ab":"ab"}]
+2 {"ab":"ab"}
UPDATE t1 set dyn=NULL;
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
INSERT INTO t1 VALUES(2,column_create("ab","ab"));
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
-2 [{"ab":"ab"}]
+2 {"ab":"ab"}
UPDATE t1 set dyn="";
select rowkey, column_json(dyn) from t1;
rowkey column_json(dyn)
diff --git a/mysql-test/r/dyncol.result b/mysql-test/r/dyncol.result
index c8d23d75d6c..d50a5c0a27d 100644
--- a/mysql-test/r/dyncol.result
+++ b/mysql-test/r/dyncol.result
@@ -1568,10 +1568,10 @@ ERROR 22007: Illegal value used as argument of dynamic column function
#
select column_json(column_create("int", -1212 as int, "uint", 12334 as unsigned int, "decimal", "23.344" as decimal, "double", 1.23444e50 as double, "string", 'gdgd\\dhdjh"dhdhd' as char, "time", "0:45:49.000001" AS time, "datetime", "2011-04-05 0:45:49.000001" AS datetime, "date", "2011-04-05" AS date));
column_json(column_create("int", -1212 as int, "uint", 12334 as unsigned int, "decimal", "23.344" as decimal, "double", 1.23444e50 as double, "string", 'gdgd\\dhdjh"dhdhd' as char, "time", "0:45:49.000001" AS time, "datetime", "2011-04-05 0:45:49.000001"
-[{"int":-1212},{"date":"2011-04-05"},{"time":"00:45:49.000001"},{"uint":12334},{"double":"1.23444e+50"},{"string":"gdgd\\dhdjh\"dhdhd"},{"decimal":23.344},{"datetime":"2011-04-05 00:45:49.000001"}]
+{"int":-1212,"date":"2011-04-05","time":"00:45:49.000001","uint":12334,"double":"1.23444e+50","string":"gdgd\\dhdjh\"dhdhd","decimal":23.344,"datetime":"2011-04-05 00:45:49.000001"}
select column_json(column_create(1, -1212 as int, 2, 12334 as unsigned int, 3, "23.344" as decimal, 4, 1.23444e50 as double, 5, 'gdgd\\dhdjh"dhdhd' as char, 6, "0:45:49.000001" AS time, 7, "2011-04-05 0:45:49.000001" AS datetime, 8, "2011-04-05" AS date));
column_json(column_create(1, -1212 as int, 2, 12334 as unsigned int, 3, "23.344" as decimal, 4, 1.23444e50 as double, 5, 'gdgd\\dhdjh"dhdhd' as char, 6, "0:45:49.000001" AS time, 7, "2011-04-05 0:45:49.000001" AS datetime, 8, "2011-04-05" AS date))
-[{"1":-1212},{"2":12334},{"3":23.344},{"4":"1.23444e+50"},{"5":"gdgd\\dhdjh\"dhdhd"},{"6":"00:45:49.000001"},{"7":"2011-04-05 00:45:49.000001"},{"8":"2011-04-05"}]
+{"1":-1212,"2":12334,"3":23.344,"4":"1.23444e+50","5":"gdgd\\dhdjh\"dhdhd","6":"00:45:49.000001","7":"2011-04-05 00:45:49.000001","8":"2011-04-05"}
#
# CHECK test
#
@@ -1592,48 +1592,48 @@ NULL
#
select column_json(column_create("string", "'\"/\\`.,whatever")),hex(column_create("string", "'\"/\\`.,whatever"));
column_json(column_create("string", "'\"/\\`.,whatever")) hex(column_create("string", "'\"/\\`.,whatever"))
-[{"string":"'\"/\\`.,whatever"}] 040100060000000300737472696E670827222F5C602E2C7768617465766572
+{"string":"'\"/\\`.,whatever"} 040100060000000300737472696E670827222F5C602E2C7768617465766572
#
# embedding test
#
select column_json(column_create("val", "val", "emb", column_create("val2", "val2")));
column_json(column_create("val", "val", "emb", column_create("val2", "val2")))
-[{"emb":[{"val2":"val2"}],{"val":"val"}]
+{"emb":{"val2":"val2"},"val":"val"}
select column_json(column_create(1, "val", 2, column_create(3, "val2")));
column_json(column_create(1, "val", 2, column_create(3, "val2")))
-[{"1":"val"},{"2":[{"3":"val2"}]]
+{"1":"val","2":{"3":"val2"}}
#
# Time encoding
#
select hex(column_create("t", "800:46:06.23434" AS time)) as hex,
column_json(column_create("t", "800:46:06.23434" AS time)) as json;
hex json
-04010001000000070074649363B82003 [{"t":"800:46:06.234340"}]
+04010001000000070074649363B82003 {"t":"800:46:06.234340"}
select hex(column_create(1, "800:46:06.23434" AS time)) as hex,
column_json(column_create(1, "800:46:06.23434" AS time)) as json;
hex json
-000100010007649363B82003 [{"1":"800:46:06.234340"}]
+000100010007649363B82003 {"1":"800:46:06.234340"}
select hex(column_create("t", "800:46:06" AS time)) as hex,
column_json(column_create("t", "800:46:06" AS time)) as json;
hex json
-04010001000000070074860B32 [{"t":"800:46:06"}]
+04010001000000070074860B32 {"t":"800:46:06"}
select hex(column_create(1, "800:46:06" AS time)) as hex,
column_json(column_create(1, "800:46:06" AS time)) as json;
hex json
-000100010007000060B82003 [{"1":"800:46:06"}]
+000100010007000060B82003 {"1":"800:46:06"}
select hex(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as hex,
column_json(column_create("t", "2012-12-21 10:46:06.23434" AS datetime)) as json;
hex json
-0401000100000005007495B90F649363B80A00 [{"t":"2012-12-21 10:46:06.234340"}]
+0401000100000005007495B90F649363B80A00 {"t":"2012-12-21 10:46:06.234340"}
select hex(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as hex,
column_json(column_create(1, "2012-12-21 10:46:06.23434" AS datetime)) as json;
hex json
-00010001000595B90F649363B80A00 [{"1":"2012-12-21 10:46:06.234340"}]
+00010001000595B90F649363B80A00 {"1":"2012-12-21 10:46:06.234340"}
select hex(column_create("t", "2012-12-21 10:46:06" AS datetime)) as hex,
column_json(column_create("t", "2012-12-21 10:46:06" AS datetime)) as json;
hex json
-0401000100000005007495B90F86AB00 [{"t":"2012-12-21 10:46:06"}]
+0401000100000005007495B90F86AB00 {"t":"2012-12-21 10:46:06"}
select hex(column_create(1, "2012-12-21 10:46:06" AS datetime)) as hex,
column_json(column_create(1, "2012-12-21 10:46:06" AS datetime)) as json;
hex json
-00010001000595B90F000060B80A00 [{"1":"2012-12-21 10:46:06"}]
+00010001000595B90F000060B80A00 {"1":"2012-12-21 10:46:06"}
diff --git a/mysys/ma_dyncol.c b/mysys/ma_dyncol.c
index 34bb8b9de3d..575c2eceb11 100644
--- a/mysys/ma_dyncol.c
+++ b/mysys/ma_dyncol.c
@@ -2368,7 +2368,7 @@ dynamic_column_exists_internal(DYNAMIC_COLUMN *str, uint num_key,
/**
- List not-null columns in the packed string (only numeric foemat)
+ List not-null columns in the packed string (only numeric format)
@param str The packed string
@param array_of_uint Where to put reference on created array
@@ -2378,12 +2378,6 @@ dynamic_column_exists_internal(DYNAMIC_COLUMN *str, uint num_key,
enum enum_dyncol_func_result
dynamic_column_list(DYNAMIC_COLUMN *str, DYNAMIC_ARRAY *array_of_uint)
{
- return mariadb_dyncol_list(str, array_of_uint);
-}
-
-enum enum_dyncol_func_result
-mariadb_dyncol_list(DYNAMIC_COLUMN *str, DYNAMIC_ARRAY *array_of_uint)
-{
DYN_HEADER header;
uchar *read;
uint i;
@@ -2417,6 +2411,48 @@ mariadb_dyncol_list(DYNAMIC_COLUMN *str, DYNAMIC_ARRAY *array_of_uint)
return ER_DYNCOL_OK;
}
+/**
+ List not-null columns in the packed string (only numeric format)
+
+ @param str The packed string
+ @param array_of_uint Where to put reference on created array
+
+ @return ER_DYNCOL_* return code
+*/
+enum enum_dyncol_func_result
+mariadb_dyncol_list(DYNAMIC_COLUMN *str, uint *count, uint **nums)
+{
+ DYN_HEADER header;
+ uchar *read;
+ uint i;
+ enum enum_dyncol_func_result rc;
+
+ (*nums)= 0; /* In case of errors */
+ if (str->length == 0)
+ return ER_DYNCOL_OK; /* no columns */
+
+ if ((rc= init_read_hdr(&header, str)) < 0)
+ return rc;
+
+ if (header.format != dyncol_fmt_num)
+ return ER_DYNCOL_FORMAT;
+
+ if (header.entry_size * header.column_count + FIXED_HEADER_SIZE >
+ str->length)
+ return ER_DYNCOL_FORMAT;
+
+ if (!((*nums)= my_malloc(sizeof(uint) * header.column_count, MYF(0))))
+ return ER_DYNCOL_RESOURCE;
+
+ for (i= 0, read= header.header;
+ i < header.column_count;
+ i++, read+= header.entry_size)
+ {
+ (*nums)[i]= uint2korr(read);
+ }
+ (*count)= header.column_count;
+ return ER_DYNCOL_OK;
+}
/**
List not-null columns in the packed string (any format)
@@ -4058,7 +4094,7 @@ mariadb_dyncol_json_internal(DYNAMIC_COLUMN *str, DYNAMIC_STRING *json,
rc= ER_DYNCOL_RESOURCE;
- if (dynstr_append_mem(json, "[", 1))
+ if (dynstr_append_mem(json, "{", 1))
goto err;
for (i= 0, header.entry= header.header;
i < header.column_count;
@@ -4080,8 +4116,7 @@ mariadb_dyncol_json_internal(DYNAMIC_COLUMN *str, DYNAMIC_STRING *json,
rc= ER_DYNCOL_FORMAT;
goto err;
}
- if ((rc= dynamic_column_get_value(&header, &val)) < 0 ||
- dynstr_append_mem(json, "{", 1))
+ if ((rc= dynamic_column_get_value(&header, &val)) < 0)
goto err;
if (header.format == dyncol_fmt_num)
{
@@ -4125,12 +4160,11 @@ mariadb_dyncol_json_internal(DYNAMIC_COLUMN *str, DYNAMIC_STRING *json,
else
{
if ((rc= mariadb_dyncol_val_str(json, &val,
- &my_charset_utf8_general_ci, '"')) < 0 ||
- dynstr_append_mem(json, "}", 1))
+ &my_charset_utf8_general_ci, '"')) < 0)
goto err;
}
}
- if (dynstr_append_mem(json, "]", 1))
+ if (dynstr_append_mem(json, "}", 1))
{
rc= ER_DYNCOL_RESOURCE;
goto err;
diff --git a/sql/item_func.h b/sql/item_func.h
index ccb86fd03e5..e13fa0834f0 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -58,7 +58,7 @@ public:
NOW_FUNC, TRIG_COND_FUNC,
SUSERVAR_FUNC, GUSERVAR_FUNC, COLLATE_FUNC,
EXTRACT_FUNC, CHAR_TYPECAST_FUNC, FUNC_SP, UDF_FUNC,
- NEG_FUNC, GSYSVAR_FUNC, DYNCOL };
+ NEG_FUNC, GSYSVAR_FUNC, DYNCOL_FUNC };
enum optimize_type { OPTIMIZE_NONE,OPTIMIZE_KEY,OPTIMIZE_OP, OPTIMIZE_NULL,
OPTIMIZE_EQUAL };
enum Type type() const { return FUNC_ITEM; }
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index 706fbbff94d..5559ffa6c20 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -3837,7 +3837,7 @@ bool Item_func_dyncol_create::prepare_arguments(bool force_names_arg)
if (type == DYN_COL_STRING &&
args[valpos]->type() == Item::FUNC_ITEM &&
- ((Item_func *)args[valpos])->functype() == DYNCOL)
+ ((Item_func *)args[valpos])->functype() == DYNCOL_FUNC)
{
force_names= 1;
break;
@@ -3904,7 +3904,7 @@ bool Item_func_dyncol_create::prepare_arguments(bool force_names_arg)
}
if (type == DYN_COL_STRING &&
args[valpos]->type() == Item::FUNC_ITEM &&
- ((Item_func *)args[valpos])->functype() == DYNCOL)
+ ((Item_func *)args[valpos])->functype() == DYNCOL_FUNC)
{
DBUG_ASSERT(names || force_names);
type= DYN_COL_DYNCOL;
@@ -3988,7 +3988,7 @@ bool Item_func_dyncol_create::prepare_arguments(bool force_names_arg)
case DYN_COL_DECIMAL:
if ((dres= args[valpos]->val_decimal(&dtmp)))
{
- dynamic_column_prepare_decimal(&vals[i]);
+ mariadb_dyncol_prepare_decimal(&vals[i]);
DBUG_ASSERT(vals[i].x.decimal.value.len == dres->len);
vals[i].x.decimal.value.intg= dres->intg;
vals[i].x.decimal.value.frac= dres->frac;
@@ -3998,7 +3998,7 @@ bool Item_func_dyncol_create::prepare_arguments(bool force_names_arg)
}
else
{
- dynamic_column_prepare_decimal(&vals[i]); // just to be safe
+ mariadb_dyncol_prepare_decimal(&vals[i]); // just to be safe
DBUG_ASSERT(args[valpos]->null_value);
}
break;
@@ -4055,7 +4055,7 @@ String *Item_func_dyncol_create::val_str(String *str)
/* Move result from DYNAMIC_COLUMN to str_value */
char *ptr;
size_t length, alloc_length;
- mariadb_dyncol_reassociate(&col, &ptr, &length, &alloc_length);
+ dynstr_reassociate(&col, &ptr, &length, &alloc_length);
str_value.reassociate(ptr, (uint32) length, (uint32) alloc_length,
&my_charset_bin);
res= &str_value;
@@ -4197,7 +4197,7 @@ String *Item_func_dyncol_add::val_str(String *str)
/* Move result from DYNAMIC_COLUMN to str */
char *ptr;
size_t length, alloc_length;
- mariadb_dyncol_reassociate(&col, &ptr, &length, &alloc_length);
+ dynstr_reassociate(&col, &ptr, &length, &alloc_length);
str->reassociate(ptr, (uint32) length, (uint32) alloc_length,
&my_charset_bin);
null_value= FALSE;
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h
index 8ef67654b35..d21c938f378 100644
--- a/sql/item_strfunc.h
+++ b/sql/item_strfunc.h
@@ -1013,7 +1013,7 @@ public:
const char *func_name() const{ return "column_create"; }
String *val_str(String *);
virtual void print(String *str, enum_query_type query_type);
- virtual enum Functype functype() const { return DYNCOL; }
+ virtual enum Functype functype() const { return DYNCOL_FUNC; }
};
@@ -1051,11 +1051,9 @@ class Item_dyncol_get: public Item_str_func
public:
Item_dyncol_get(Item *str, Item *num)
:Item_str_func(str, num)
- {
- max_length= MAX_DYNAMIC_COLUMN_LENGTH;
- }
+ {}
void fix_length_and_dec()
- { maybe_null= 1; }
+ { maybe_null= 1; max_length= MAX_BLOB_WIDTH; }
/* Mark that collation can change between calls */
bool dynamic_result() { return 1; }