summaryrefslogtreecommitdiff
path: root/storage/connect/filamap.cpp
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2017-01-18 19:46:52 +0200
committerMarko Mäkelä <marko.makela@mariadb.com>2017-01-18 22:21:19 +0200
commit96c49808bd64e2dd45c24e8746b32b96c37da98a (patch)
tree90b646ce116d94a6c0fa71382598e79f522c763c /storage/connect/filamap.cpp
parenta1315a650a69745bac7166cfe1423215dfaac6e1 (diff)
parentf7d030489d2980c9deb733925515099ec256f6d2 (diff)
downloadmariadb-git-10.2-merge.tar.gz
WIP merge 10.1 to 10.210.2-merge
Bootstrap fails: mysqld: sql/field.h:957: bool Field::has_explicit_value(): Assertion `table->has_value_set' failed. assertion=0x1411e89 "table->has_value_set", file=0x1411e9e "/home/marko/mariadb/server/sql/field.h", line=957, function=0x1411ec5 "bool Field::has_explicit_value()") at assert.c:101 at /home/marko/mariadb/server/sql/field.h:957 table_list=0x7fff7407b4f0, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false) at /home/marko/mariadb/server/sql/sql_insert.cc:1017 at /home/marko/mariadb/server/sql/sql_parse.cc:4370 rawbuf=0x7fff740f43e0 " INSERT INTO global_suppressions VALUES (\".SELECT UNIX_TIMESTAMP... failed on master\"), (\"Aborted connection\"), (\"Client requested master to start replication from impossible position\"), (\"Could"..., length=6339, parser_state=0x7fffe8efcab8, is_com_multi=false, is_next_command=false) at /home/marko/mariadb/server/sql/sql_parse.cc:7839 at /home/marko/mariadb/server/sql/sql_parse.cc:1033 There are unresolved conflicts in the following files: mysql-test/suite/galera/r/galera_var_cluster_address.result mysql-test/suite/innodb/r/innodb-wl5522-debug-zip.result mysql-test/suite/innodb/r/innodb-wl5522-debug.result mysql-test/suite/innodb/r/innodb_bug14147491.result mysql-test/suite/innodb/r/xa_recovery.result mysql-test/suite/innodb/t/doublewrite.test mysql-test/suite/innodb/t/innodb-wl5522-debug-zip.test mysql-test/suite/innodb/t/innodb-wl5522-debug.test mysql-test/suite/innodb/t/innodb_bug14147491.test mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result mysql-test/suite/sys_vars/r/sysvars_innodb.result mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff mysql-test/suite/vcol/inc/vcol_trigger_sp.inc mysql-test/suite/vcol/r/vcol_trigger_sp_innodb.result mysql-test/suite/vcol/r/vcol_trigger_sp_myisam.result
Diffstat (limited to 'storage/connect/filamap.cpp')
-rw-r--r--storage/connect/filamap.cpp53
1 files changed, 35 insertions, 18 deletions
diff --git a/storage/connect/filamap.cpp b/storage/connect/filamap.cpp
index c6b4585a839..94c562a9981 100644
--- a/storage/connect/filamap.cpp
+++ b/storage/connect/filamap.cpp
@@ -87,7 +87,7 @@ int MAPFAM::GetFileLength(PGLOBAL g)
{
int len;
- len = (To_Fb) ? To_Fb->Length : TXTFAM::GetFileLength(g);
+ len = (To_Fb && To_Fb->Count) ? To_Fb->Length : TXTFAM::GetFileLength(g);
if (trace)
htrc("Mapped file length=%d\n", len);
@@ -319,11 +319,13 @@ int MAPFAM::SkipRecord(PGLOBAL g, bool header)
/***********************************************************************/
int MAPFAM::ReadBuffer(PGLOBAL g)
{
- int len;
+ int rc, len;
// Are we at the end of the memory
- if (Mempos >= Top)
- return RC_EF;
+ if (Mempos >= Top)
+ if ((rc = GetNext(g)) != RC_OK)
+ return rc;
+
if (!Placed) {
/*******************************************************************/
@@ -341,8 +343,10 @@ int MAPFAM::ReadBuffer(PGLOBAL g)
/*******************************************************************/
switch (Tdbp->TestBlock(g)) {
case RC_EF:
- return RC_EF;
- case RC_NF:
+ if ((rc = GetNext(g)) != RC_OK)
+ return rc;
+
+ case RC_NF:
// Skip this record
if ((rc = SkipRecord(g, false)) != RC_OK)
return rc;
@@ -498,7 +502,7 @@ int MAPFAM::DeleteRecords(PGLOBAL g, int irc)
void MAPFAM::CloseTableFile(PGLOBAL g, bool)
{
PlugCloseFile(g, To_Fb);
- To_Fb = NULL; // To get correct file size in Cardinality
+//To_Fb = NULL; // To get correct file size in Cardinality
if (trace)
htrc("MAP Close: closing %s count=%d\n",
@@ -569,7 +573,7 @@ int MBKFAM::GetRowID(void)
/***********************************************************************/
int MBKFAM::ReadBuffer(PGLOBAL g)
{
- int len;
+ int rc, len;
/*********************************************************************/
/* Sequential block reading when Placed is not true. */
@@ -577,8 +581,10 @@ int MBKFAM::ReadBuffer(PGLOBAL g)
if (Placed) {
Placed = false;
} else if (Mempos >= Top) { // Are we at the end of the memory
- return RC_EF;
- } else if (++CurNum < Nrec) {
+ if ((rc = GetNext(g)) != RC_OK)
+ return rc;
+
+ } else if (++CurNum < Nrec) {
Fpos = Mempos;
} else {
/*******************************************************************/
@@ -588,7 +594,8 @@ int MBKFAM::ReadBuffer(PGLOBAL g)
next:
if (++CurBlk >= Block)
- return RC_EF;
+ if ((rc = GetNext(g)) != RC_OK)
+ return rc;
/*******************************************************************/
/* Before reading a new block, check whether block optimization */
@@ -596,8 +603,11 @@ int MBKFAM::ReadBuffer(PGLOBAL g)
/*******************************************************************/
switch (Tdbp->TestBlock(g)) {
case RC_EF:
- return RC_EF;
- case RC_NF:
+ if ((rc = GetNext(g)) != RC_OK)
+ return rc;
+
+ break;
+ case RC_NF:
goto next;
} // endswitch rc
@@ -697,14 +707,18 @@ int MPXFAM::InitDelete(PGLOBAL, int fpos, int)
/***********************************************************************/
int MPXFAM::ReadBuffer(PGLOBAL g)
{
+ int rc;
+
/*********************************************************************/
/* Sequential block reading when Placed is not true. */
/*********************************************************************/
if (Placed) {
Placed = false;
} else if (Mempos >= Top) { // Are we at the end of the memory
- return RC_EF;
- } else if (++CurNum < Nrec) {
+ if ((rc = GetNext(g)) != RC_OK)
+ return rc;
+
+ } else if (++CurNum < Nrec) {
Fpos = Mempos;
} else {
/*******************************************************************/
@@ -714,7 +728,7 @@ int MPXFAM::ReadBuffer(PGLOBAL g)
next:
if (++CurBlk >= Block)
- return RC_EF;
+ return GetNext(g);
/*******************************************************************/
/* Before reading a new block, check whether block optimization */
@@ -722,8 +736,11 @@ int MPXFAM::ReadBuffer(PGLOBAL g)
/*******************************************************************/
switch (Tdbp->TestBlock(g)) {
case RC_EF:
- return RC_EF;
- case RC_NF:
+ if ((rc = GetNext(g)) != RC_OK)
+ return rc;
+
+ break;
+ case RC_NF:
goto next;
} // endswitch rc