Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
30292b46
Commit
30292b46
authored
Jan 27, 2006
by
pekka@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ndb - wl#2972 fix null blobs
parent
43e6c85b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
38 additions
and
15 deletions
+38
-15
mysql-test/t/disabled.def
mysql-test/t/disabled.def
+1
-1
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+37
-14
No files found.
mysql-test/t/disabled.def
View file @
30292b46
...
...
@@ -30,6 +30,6 @@ ndb_autodiscover2 : Needs to be fixed w.r.t binlog
system_mysql_db
:
Needs
fixing
system_mysql_db_fix
:
Needs
fixing
#ndb_alter_table_row : sometimes wrong error 1015!=1046
ndb_gis
:
garbled
msgs
from
corrupt
THD
*
+
partitioning
problem
ndb_gis
:
garbled
msgs
from
corrupt
THD
*
# vim: set filetype=conf:
sql/ha_ndbcluster.cc
View file @
30292b46
...
...
@@ -844,14 +844,29 @@ int get_ndb_blobs_value(TABLE* table, NdbValue* value_array,
buf
,
(
uint
)
blob_len
));
if
(
ndb_blob
->
readData
(
buf
,
len
)
!=
0
)
DBUG_RETURN
(
-
1
);
DBUG_PRINT
(
"info"
,
(
"blob field %d offset=%u len=%u [ptrdiff=%d]"
,
i
,
offset
,
len
,
(
int
)
ptrdiff
));
DBUG_ASSERT
(
len
==
blob_len
);
// Ugly hack assumes only ptr needs to be changed
field_blob
->
ptr
+=
ptrdiff
;
field_blob
->
ptr
+=
ptrdiff
;
field_blob
->
set_ptr
(
len
,
buf
);
field_blob
->
ptr
-=
ptrdiff
;
field_blob
->
ptr
-=
ptrdiff
;
}
offset
+=
blob_size
;
}
else
{
if
(
loop
==
1
)
{
// have to set length even in this case
char
*
buf
=
buffer
+
offset
;
uint32
len
=
0
;
field_blob
->
ptr
+=
ptrdiff
;
field_blob
->
set_ptr
(
len
,
buf
);
field_blob
->
ptr
-=
ptrdiff
;
DBUG_PRINT
(
"info"
,
(
"blob field %d isNull=%d"
,
i
,
isNull
));
}
}
}
}
if
(
loop
==
0
&&
offset
>
buffer_size
)
...
...
@@ -2735,21 +2750,29 @@ void ndb_unpack_record(TABLE *table, NdbValue *value,
else
{
NdbBlob
*
ndb_blob
=
(
*
value
).
blob
;
uint
col_no
=
ndb_blob
->
getColumn
()
->
getColumnNo
();
int
isNull
;
ndb_blob
->
getDefined
(
isNull
);
if
(
isNull
!=
0
)
if
(
isNull
==
1
)
{
uint
col_no
=
ndb_blob
->
getColumn
()
->
getColumnNo
();
if
(
isNull
==
1
)
{
DBUG_PRINT
(
"info"
,(
"[%u] NULL"
,
col_no
))
field
->
set_null
(
row_offset
);
}
else
{
DBUG_PRINT
(
"info"
,(
"[%u] UNDEFINED"
,
col_no
));
bitmap_clear_bit
(
defined
,
col_no
);
}
DBUG_PRINT
(
"info"
,(
"[%u] NULL"
,
col_no
))
field
->
set_null
(
row_offset
);
}
else
if
(
isNull
==
-
1
)
{
DBUG_PRINT
(
"info"
,(
"[%u] UNDEFINED"
,
col_no
));
bitmap_clear_bit
(
defined
,
col_no
);
}
else
{
#ifndef DBUG_OFF
// pointer vas set in get_ndb_blobs_value
Field_blob
*
field_blob
=
(
Field_blob
*
)
field
;
char
*
ptr
;
field_blob
->
get_ptr
(
&
ptr
,
row_offset
);
uint32
len
=
field_blob
->
get_length
(
row_offset
);
DBUG_PRINT
(
"info"
,(
"[%u] SET ptr=%p len=%u"
,
col_no
,
ptr
,
len
));
#endif
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment