29 #include "read0read.ic"
145 read_view_create_low(
177 ibool needs_insert = TRUE;
178 ulint insert_done = 0;
182 ut_ad(mutex_own(&kernel_mutex));
186 if (old_view == NULL) {
196 needs_insert = FALSE;
199 view_copy = read_view_create_low(n, heap);
209 > read_view_get_nth_trx_id(old_view, i))) {
211 read_view_set_nth_trx_id(view_copy, i,
213 needs_insert = FALSE;
216 read_view_set_nth_trx_id(view_copy, i,
217 read_view_get_nth_trx_id(
261 ut_ad(mutex_own(&kernel_mutex));
280 if (trx->
id != cr_trx_id
284 read_view_set_nth_trx_id(view, n, trx->
id);
307 view->
up_limit_id = read_view_get_nth_trx_id(view, n - 1);
326 ut_ad(mutex_own(&kernel_mutex));
340 ut_a(trx->global_read_view);
342 mutex_enter(&kernel_mutex);
349 trx->global_read_view = NULL;
351 mutex_exit(&kernel_mutex);
367 "High-granularity read view undo_n:o %llu\n",
370 fprintf(stderr,
"Normal read view\n");
373 fprintf(stderr,
"Read view low limit trx n:o " TRX_ID_FMT "\n",
376 fprintf(stderr,
"Read view up limit trx id " TRX_ID_FMT "\n",
379 fprintf(stderr,
"Read view low limit trx id " TRX_ID_FMT "\n",
382 fprintf(stderr,
"Read view individually stored trx ids:\n");
386 for (i = 0; i < n_ids; i++) {
387 fprintf(stderr,
"Read view trx id " TRX_ID_FMT "\n",
388 read_view_get_nth_trx_id(view, i));
417 curview->
heap = heap;
419 mutex_enter(&kernel_mutex);
421 curview->
read_view = read_view_create_low(
444 read_view_set_nth_trx_id(view, n, trx->
id);
467 view->
up_limit_id = read_view_get_nth_trx_id(view, n - 1);
474 mutex_exit(&kernel_mutex);
496 mutex_enter(&kernel_mutex);
501 mutex_exit(&kernel_mutex);
519 mutex_enter(&kernel_mutex);
521 if (UNIV_LIKELY(curview != NULL)) {
527 mutex_exit(&kernel_mutex);
#define UT_LIST_GET_LEN(BASE)
#define UT_LIST_GET_NEXT(NAME, N)
UNIV_INTERN void read_view_close(read_view_t *view)
#define mem_heap_free(heap)
UNIV_INTERN void read_cursor_view_close_for_mysql(trx_t *trx, cursor_view_t *curview)
UNIV_INTERN read_view_t * read_view_open_now(trx_id_t cr_trx_id, mem_heap_t *heap)
#define UT_LIST_REMOVE(NAME, BASE, N)
UNIV_INTERN read_view_t * read_view_oldest_copy_or_open_new(trx_id_t cr_trx_id, mem_heap_t *heap)
#define VIEW_HIGH_GRANULARITY
UNIV_INLINE void * mem_heap_alloc(mem_heap_t *heap, ulint n)
#define mem_heap_create(N)
#define UT_LIST_ADD_LAST(NAME, BASE, N)
#define UT_LIST_GET_FIRST(BASE)
UNIV_INLINE void mem_heap_empty(mem_heap_t *heap)
#define UT_LIST_ADD_FIRST(NAME, BASE, N)
UNIV_INTERN void read_view_print(const read_view_t *view)
UNIV_INTERN void read_view_close_for_mysql(trx_t *trx)
UNIV_INTERN void read_cursor_set_for_mysql(trx_t *trx, cursor_view_t *curview)
#define UT_LIST_GET_LAST(BASE)
UNIV_INTERN cursor_view_t * read_cursor_view_create_for_mysql(trx_t *cr_trx)