diff options
author | unknown <monty@donna.mysql.com> | 2001-02-17 14:19:19 +0200 |
---|---|---|
committer | unknown <monty@donna.mysql.com> | 2001-02-17 14:19:19 +0200 |
commit | 2662b59306ef0cd495fa6e2edf7129e58a11393a (patch) | |
tree | bfe39951a73e906579ab819bf5198ad8f3a64a36 /innobase/include/row0upd.ic | |
parent | 66de55a56bdcf2f7a9c0c4f8e19b3e761475e202 (diff) | |
download | mariadb-git-2662b59306ef0cd495fa6e2edf7129e58a11393a.tar.gz |
Added Innobase to source distribution
Docs/manual.texi:
Added Innobase documentation
configure.in:
Incremented version
include/my_base.h:
Added option for Innobase
myisam/mi_check.c:
cleanup
mysql-test/t/bdb.test:
cleanup
mysql-test/t/innobase.test:
Extended with new tests from bdb.test
mysql-test/t/merge.test:
Added test of SHOW create
mysys/my_init.c:
Fix for UNIXWARE 7
scripts/mysql_install_db.sh:
Always write how to start mysqld
scripts/safe_mysqld.sh:
Fixed type
sql/ha_innobase.cc:
Update to new version
sql/ha_innobase.h:
Update to new version
sql/handler.h:
Added 'update_table_comment()' and 'append_create_info()'
sql/sql_delete.cc:
Fixes for Innobase
sql/sql_select.cc:
Fixes for Innobase
sql/sql_show.cc:
Append create information (for MERGE tables)
sql/sql_update.cc:
Fixes for Innobase
Diffstat (limited to 'innobase/include/row0upd.ic')
-rw-r--r-- | innobase/include/row0upd.ic | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/innobase/include/row0upd.ic b/innobase/include/row0upd.ic new file mode 100644 index 00000000000..b1b10bef0e8 --- /dev/null +++ b/innobase/include/row0upd.ic @@ -0,0 +1,105 @@ +/****************************************************** +Update of a row + +(c) 1996 Innobase Oy + +Created 12/27/1996 Heikki Tuuri +*******************************************************/ + +#include "mtr0log.h" +#include "trx0trx.h" +#include "trx0undo.h" +#include "row0row.h" +#include "btr0sea.h" + +/************************************************************************* +Creates an update vector object. */ +UNIV_INLINE +upd_t* +upd_create( +/*=======*/ + /* out, own: update vector object */ + ulint n, /* in: number of fields */ + mem_heap_t* heap) /* in: heap from which memory allocated */ +{ + upd_t* update; + + update = mem_heap_alloc(heap, sizeof(upd_t)); + + update->info_bits = 0; + update->n_fields = n; + update->fields = mem_heap_alloc(heap, sizeof(upd_field_t) * n); + + return(update); +} + +/************************************************************************* +Returns the number of fields in the update vector == number of columns +to be updated by an update vector. */ +UNIV_INLINE +ulint +upd_get_n_fields( +/*=============*/ + /* out: number of fields */ + upd_t* update) /* in: update vector */ +{ + ut_ad(update); + + return(update->n_fields); +} + +/************************************************************************* +Returns the nth field of an update vector. */ +UNIV_INLINE +upd_field_t* +upd_get_nth_field( +/*==============*/ + /* out: update vector field */ + upd_t* update, /* in: update vector */ + ulint n) /* in: field position in update vector */ +{ + ut_ad(update); + ut_ad(n < update->n_fields); + + return(update->fields + n); +} + +/************************************************************************* +Sets the clustered index field number to be updated by an update vector +field. */ +UNIV_INLINE +void +upd_field_set_field_no( +/*===================*/ + upd_field_t* upd_field, /* in: update vector field */ + ulint field_no, /* in: field number in a clustered + index */ + dict_index_t* index) /* in: clustered index */ +{ + ut_ad(index->type & DICT_CLUSTERED); + + upd_field->field_no = field_no; + + dtype_copy(dfield_get_type(&(upd_field->new_val)), + dict_index_get_nth_type(index, field_no)); +} + +/************************************************************************* +Updates the trx id and roll ptr field in a clustered index record when +a row is updated or marked deleted. */ +UNIV_INLINE +void +row_upd_rec_sys_fields( +/*===================*/ + rec_t* rec, /* in: record */ + dict_index_t* index, /* in: clustered index */ + trx_t* trx, /* in: transaction */ + dulint roll_ptr)/* in: roll ptr of the undo log record */ +{ + ut_ad(index->type & DICT_CLUSTERED); + ut_ad(!buf_block_align(rec)->is_hashed + || rw_lock_own(&btr_search_latch, RW_LOCK_EX)); + + row_set_rec_trx_id(rec, index, trx->id); + row_set_rec_roll_ptr(rec, index, roll_ptr); +} |