mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-29397 CONNECT engine: Fix note turning into error (#2325)
* MDEV-29397 Fix note turning into error ODBC Rewind triggered an error with no SQL, but this is sometimes a valid condition (as can be seen with other classes). Setting this to a 0 return stops errors firing when they shouldn't. Also fixes ASAN hits from in MDEV-29687 tabext.cpp.
This commit is contained in:
@@ -319,3 +319,12 @@ SELECT * from pg_in_maria;
|
|||||||
my space column
|
my space column
|
||||||
My value
|
My value
|
||||||
DROP TABLE pg_in_maria;
|
DROP TABLE pg_in_maria;
|
||||||
|
#
|
||||||
|
# MDEV-29397 UPDATE with WHERE on part of two-part primary key causes
|
||||||
|
# info to turn into error.
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a VARCHAR(6), b VARCHAR(6), PRIMARY KEY(a, b)) ENGINE=CONNECT TABNAME='schema1.t3' CHARSET=utf8 DATA_CHARSET=utf8 TABLE_TYPE=ODBC CONNECTION='DSN=ConnectEnginePostgresql;UID=mtr;PWD=mtr';
|
||||||
|
UPDATE t1 SET a='10' WHERE a='20';
|
||||||
|
Warnings:
|
||||||
|
Note 1105 schema1.t3: 0 affected rows
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -223,3 +223,12 @@ DROP TABLE t1;
|
|||||||
CREATE TABLE pg_in_maria ENGINE=CONNECT TABNAME='schema1.space_in_column_name' CHARSET=utf8 DATA_CHARSET=utf8 TABLE_TYPE=ODBC CONNECTION='DSN=ConnectEnginePostgresql;UID=mtr;PWD=mtr' quoted=1;
|
CREATE TABLE pg_in_maria ENGINE=CONNECT TABNAME='schema1.space_in_column_name' CHARSET=utf8 DATA_CHARSET=utf8 TABLE_TYPE=ODBC CONNECTION='DSN=ConnectEnginePostgresql;UID=mtr;PWD=mtr' quoted=1;
|
||||||
SELECT * from pg_in_maria;
|
SELECT * from pg_in_maria;
|
||||||
DROP TABLE pg_in_maria;
|
DROP TABLE pg_in_maria;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-29397 UPDATE with WHERE on part of two-part primary key causes
|
||||||
|
--echo # info to turn into error.
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a VARCHAR(6), b VARCHAR(6), PRIMARY KEY(a, b)) ENGINE=CONNECT TABNAME='schema1.t3' CHARSET=utf8 DATA_CHARSET=utf8 TABLE_TYPE=ODBC CONNECTION='DSN=ConnectEnginePostgresql;UID=mtr;PWD=mtr';
|
||||||
|
UPDATE t1 SET a='10' WHERE a='20';
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@@ -2582,7 +2582,7 @@ int ODBConn::Rewind(char *sql, ODBCCOL *tocols)
|
|||||||
int rc, rbuf = -1;
|
int rc, rbuf = -1;
|
||||||
|
|
||||||
if (!m_hstmt)
|
if (!m_hstmt)
|
||||||
rbuf = -1;
|
rbuf = 0;
|
||||||
else if (m_Full)
|
else if (m_Full)
|
||||||
rbuf = m_Rows; // No need to "rewind"
|
rbuf = m_Rows; // No need to "rewind"
|
||||||
else if (m_Scrollable) {
|
else if (m_Scrollable) {
|
||||||
|
@@ -473,7 +473,7 @@ bool TDBEXT::MakeSQL(PGLOBAL g, bool cnt)
|
|||||||
my_len= res - buf + 1;
|
my_len= res - buf + 1;
|
||||||
my_schema_table= (char *) malloc(my_len);
|
my_schema_table= (char *) malloc(my_len);
|
||||||
memcpy(my_schema_table, buf, my_len - 1);
|
memcpy(my_schema_table, buf, my_len - 1);
|
||||||
my_schema_table[my_len] = 0;
|
my_schema_table[my_len - 1] = 0;
|
||||||
Query->Append(Quote);
|
Query->Append(Quote);
|
||||||
Query->Append(my_schema_table);
|
Query->Append(my_schema_table);
|
||||||
Query->Append(Quote);
|
Query->Append(Quote);
|
||||||
@@ -481,7 +481,7 @@ bool TDBEXT::MakeSQL(PGLOBAL g, bool cnt)
|
|||||||
Query->Append(".");
|
Query->Append(".");
|
||||||
// Parse table
|
// Parse table
|
||||||
my_len= strlen(buf) - my_len + 1;
|
my_len= strlen(buf) - my_len + 1;
|
||||||
my_schema_table= (char *) malloc(my_len);
|
my_schema_table= (char *) malloc(my_len + 1);
|
||||||
memcpy(my_schema_table, ++res, my_len);
|
memcpy(my_schema_table, ++res, my_len);
|
||||||
my_schema_table[my_len] = 0;
|
my_schema_table[my_len] = 0;
|
||||||
Query->Append(Quote);
|
Query->Append(Quote);
|
||||||
|
Reference in New Issue
Block a user