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
34baff77
Commit
34baff77
authored
Jun 09, 2011
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql-5.1 to mysql-5.5.
parents
92a017d3
6348b737
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
88 additions
and
6 deletions
+88
-6
storage/innobase/btr/btr0cur.c
storage/innobase/btr/btr0cur.c
+4
-1
storage/innobase/include/rem0rec.h
storage/innobase/include/rem0rec.h
+13
-1
storage/innobase/include/rem0rec.ic
storage/innobase/include/rem0rec.ic
+40
-1
storage/innobase/row/row0row.c
storage/innobase/row/row0row.c
+9
-1
storage/innobase/row/row0vers.c
storage/innobase/row/row0vers.c
+17
-1
storage/innobase/trx/trx0rec.c
storage/innobase/trx/trx0rec.c
+5
-1
No files found.
storage/innobase/btr/btr0cur.c
View file @
34baff77
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1994, 201
0, Innobase Oy
. All Rights Reserved.
Copyright (c) 1994, 201
1, Oracle and/or its affiliates
. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
Portions of this file contain modifications contributed and copyrighted by
...
@@ -1989,6 +1989,9 @@ btr_cur_optimistic_update(
...
@@ -1989,6 +1989,9 @@ btr_cur_optimistic_update(
heap
=
mem_heap_create
(
1024
);
heap
=
mem_heap_create
(
1024
);
offsets
=
rec_get_offsets
(
rec
,
index
,
NULL
,
ULINT_UNDEFINED
,
&
heap
);
offsets
=
rec_get_offsets
(
rec
,
index
,
NULL
,
ULINT_UNDEFINED
,
&
heap
);
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
ut_a
(
!
rec_offs_any_null_extern
(
rec
,
offsets
));
#endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
#ifdef UNIV_DEBUG
#ifdef UNIV_DEBUG
if
(
btr_cur_print_record_ops
&&
thr
)
{
if
(
btr_cur_print_record_ops
&&
thr
)
{
...
...
storage/innobase/include/rem0rec.h
View file @
34baff77
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1994, 20
09, Innobase Oy
. All Rights Reserved.
Copyright (c) 1994, 20
11, Oracle and/or its affiliates
. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -480,6 +480,18 @@ ulint
...
@@ -480,6 +480,18 @@ ulint
rec_offs_any_extern
(
rec_offs_any_extern
(
/*================*/
/*================*/
const
ulint
*
offsets
);
/*!< in: array returned by rec_get_offsets() */
const
ulint
*
offsets
);
/*!< in: array returned by rec_get_offsets() */
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
/******************************************************//**
Determine if the offsets are for a record containing null BLOB pointers.
@return first field containing a null BLOB pointer, or NULL if none found */
UNIV_INLINE
const
byte
*
rec_offs_any_null_extern
(
/*=====================*/
const
rec_t
*
rec
,
/*!< in: record */
const
ulint
*
offsets
)
/*!< in: rec_get_offsets(rec) */
__attribute__
((
nonnull
,
warn_unused_result
));
#endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
/******************************************************//**
/******************************************************//**
Returns nonzero if the extern bit is set in nth field of rec.
Returns nonzero if the extern bit is set in nth field of rec.
@return nonzero if externally stored */
@return nonzero if externally stored */
...
...
storage/innobase/include/rem0rec.ic
View file @
34baff77
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1994, 20
09, Innobase Oy
. All Rights Reserved.
Copyright (c) 1994, 20
11, Oracle and/or its affiliates
. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -26,6 +26,7 @@ Created 5/30/1994 Heikki Tuuri
...
@@ -26,6 +26,7 @@ Created 5/30/1994 Heikki Tuuri
#include "mach0data.h"
#include "mach0data.h"
#include "ut0byte.h"
#include "ut0byte.h"
#include "dict0dict.h"
#include "dict0dict.h"
#include "btr0types.h"
/* Compact flag ORed to the extra size returned by rec_get_offsets() */
/* Compact flag ORed to the extra size returned by rec_get_offsets() */
#define REC_OFFS_COMPACT ((ulint) 1 << 31)
#define REC_OFFS_COMPACT ((ulint) 1 << 31)
...
@@ -1087,6 +1088,44 @@ rec_offs_any_extern(
...
@@ -1087,6 +1088,44 @@ rec_offs_any_extern(
return(UNIV_UNLIKELY(*rec_offs_base(offsets) & REC_OFFS_EXTERNAL));
return(UNIV_UNLIKELY(*rec_offs_base(offsets) & REC_OFFS_EXTERNAL));
}
}
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
/******************************************************//**
Determine if the offsets are for a record containing null BLOB pointers.
@return first field containing a null BLOB pointer, or NULL if none found */
UNIV_INLINE
const byte*
rec_offs_any_null_extern(
/*=====================*/
const rec_t* rec, /*!< in: record */
const ulint* offsets) /*!< in: rec_get_offsets(rec) */
{
ulint i;
ut_ad(rec_offs_validate(rec, NULL, offsets));
if (!rec_offs_any_extern(offsets)) {
return(NULL);
}
for (i = 0; i < rec_offs_n_fields(offsets); i++) {
if (rec_offs_nth_extern(offsets, i)) {
ulint len;
const byte* field
= rec_get_nth_field(rec, offsets, i, &len);
ut_a(len >= BTR_EXTERN_FIELD_REF_SIZE);
if (!memcmp(field + len
- BTR_EXTERN_FIELD_REF_SIZE,
field_ref_zero,
BTR_EXTERN_FIELD_REF_SIZE)) {
return(field);
}
}
}
return(NULL);
}
#endif /* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
/******************************************************//**
/******************************************************//**
Returns nonzero if the extern bit is set in nth field of rec.
Returns nonzero if the extern bit is set in nth field of rec.
@return nonzero if externally stored */
@return nonzero if externally stored */
...
...
storage/innobase/row/row0row.c
View file @
34baff77
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1996, 201
0, Innobase Oy
. All Rights Reserved.
Copyright (c) 1996, 201
1, Oracle and/or its affiliates
. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -200,6 +200,10 @@ row_build(
...
@@ -200,6 +200,10 @@ row_build(
ut_ad
(
rec_offs_validate
(
rec
,
index
,
offsets
));
ut_ad
(
rec_offs_validate
(
rec
,
index
,
offsets
));
}
}
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
ut_a
(
!
rec_offs_any_null_extern
(
rec
,
offsets
));
#endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
if
(
type
!=
ROW_COPY_POINTERS
)
{
if
(
type
!=
ROW_COPY_POINTERS
)
{
/* Take a copy of rec to heap */
/* Take a copy of rec to heap */
buf
=
mem_heap_alloc
(
heap
,
rec_offs_size
(
offsets
));
buf
=
mem_heap_alloc
(
heap
,
rec_offs_size
(
offsets
));
...
@@ -383,6 +387,10 @@ row_rec_to_index_entry(
...
@@ -383,6 +387,10 @@ row_rec_to_index_entry(
rec
=
rec_copy
(
buf
,
rec
,
offsets
);
rec
=
rec_copy
(
buf
,
rec
,
offsets
);
/* Avoid a debug assertion in rec_offs_validate(). */
/* Avoid a debug assertion in rec_offs_validate(). */
rec_offs_make_valid
(
rec
,
index
,
offsets
);
rec_offs_make_valid
(
rec
,
index
,
offsets
);
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
}
else
{
ut_a
(
!
rec_offs_any_null_extern
(
rec
,
offsets
));
#endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
}
}
entry
=
row_rec_to_index_entry_low
(
rec
,
index
,
offsets
,
n_ext
,
heap
);
entry
=
row_rec_to_index_entry_low
(
rec
,
index
,
offsets
,
n_ext
,
heap
);
...
...
storage/innobase/row/row0vers.c
View file @
34baff77
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1997, 20
09, Innobase Oy
. All Rights Reserved.
Copyright (c) 1997, 20
11, Oracle and/or its affiliates
. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -550,6 +550,11 @@ row_vers_build_for_consistent_read(
...
@@ -550,6 +550,11 @@ row_vers_build_for_consistent_read(
/* The view already sees this version: we can
/* The view already sees this version: we can
copy it to in_heap and return */
copy it to in_heap and return */
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
ut_a
(
!
rec_offs_any_null_extern
(
version
,
*
offsets
));
#endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
buf
=
mem_heap_alloc
(
in_heap
,
buf
=
mem_heap_alloc
(
in_heap
,
rec_offs_size
(
*
offsets
));
rec_offs_size
(
*
offsets
));
*
old_vers
=
rec_copy
(
buf
,
version
,
*
offsets
);
*
old_vers
=
rec_copy
(
buf
,
version
,
*
offsets
);
...
@@ -583,6 +588,10 @@ row_vers_build_for_consistent_read(
...
@@ -583,6 +588,10 @@ row_vers_build_for_consistent_read(
*
offsets
=
rec_get_offsets
(
prev_version
,
index
,
*
offsets
,
*
offsets
=
rec_get_offsets
(
prev_version
,
index
,
*
offsets
,
ULINT_UNDEFINED
,
offset_heap
);
ULINT_UNDEFINED
,
offset_heap
);
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
ut_a
(
!
rec_offs_any_null_extern
(
prev_version
,
*
offsets
));
#endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
trx_id
=
row_get_rec_trx_id
(
prev_version
,
index
,
*
offsets
);
trx_id
=
row_get_rec_trx_id
(
prev_version
,
index
,
*
offsets
);
if
(
read_view_sees_trx_id
(
view
,
trx_id
))
{
if
(
read_view_sees_trx_id
(
view
,
trx_id
))
{
...
@@ -682,6 +691,10 @@ row_vers_build_for_semi_consistent_read(
...
@@ -682,6 +691,10 @@ row_vers_build_for_semi_consistent_read(
/* We found a version that belongs to a
/* We found a version that belongs to a
committed transaction: return it. */
committed transaction: return it. */
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
ut_a
(
!
rec_offs_any_null_extern
(
version
,
*
offsets
));
#endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
if
(
rec
==
version
)
{
if
(
rec
==
version
)
{
*
old_vers
=
rec
;
*
old_vers
=
rec
;
err
=
DB_SUCCESS
;
err
=
DB_SUCCESS
;
...
@@ -739,6 +752,9 @@ row_vers_build_for_semi_consistent_read(
...
@@ -739,6 +752,9 @@ row_vers_build_for_semi_consistent_read(
version
=
prev_version
;
version
=
prev_version
;
*
offsets
=
rec_get_offsets
(
version
,
index
,
*
offsets
,
*
offsets
=
rec_get_offsets
(
version
,
index
,
*
offsets
,
ULINT_UNDEFINED
,
offset_heap
);
ULINT_UNDEFINED
,
offset_heap
);
#if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
ut_a
(
!
rec_offs_any_null_extern
(
version
,
*
offsets
));
#endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
}
/* for (;;) */
}
/* for (;;) */
if
(
heap
)
{
if
(
heap
)
{
...
...
storage/innobase/trx/trx0rec.c
View file @
34baff77
/*****************************************************************************
/*****************************************************************************
Copyright (c) 1996, 201
0, Innobase Oy
. All Rights Reserved.
Copyright (c) 1996, 201
1, Oracle and/or its affiliates
. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
the terms of the GNU General Public License as published by the Free Software
...
@@ -1593,6 +1593,10 @@ trx_undo_prev_version_build(
...
@@ -1593,6 +1593,10 @@ trx_undo_prev_version_build(
return
(
DB_ERROR
);
return
(
DB_ERROR
);
}
}
# if defined UNIV_DEBUG || defined UNIV_BLOB_LIGHT_DEBUG
ut_a
(
!
rec_offs_any_null_extern
(
rec
,
offsets
));
# endif
/* UNIV_DEBUG || UNIV_BLOB_LIGHT_DEBUG */
if
(
row_upd_changes_field_size_or_external
(
index
,
offsets
,
update
))
{
if
(
row_upd_changes_field_size_or_external
(
index
,
offsets
,
update
))
{
ulint
n_ext
;
ulint
n_ext
;
...
...
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