Skip to content

Commit 7eb34b7

Browse files
authored
Stop parsing a column named "limits" as the LIMIT keyword (#208)
Fixes #205.
1 parent c3a389f commit 7eb34b7

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

dbdimp.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,8 @@ static char *parse_params(
883883

884884
/* in case this is a nested LIMIT */
885885
case ')':
886+
/* in case this is a column named "limit" */
887+
case '=':
886888
limit_flag = FALSE;
887889
*ptr++ = *statement_ptr++;
888890
break;

t/35limit.t

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ require 'lib.pl';
1414

1515
my $dbh = DbiTestConnect($test_dsn, $test_user, $test_password,
1616
{ RaiseError => 1, PrintError => 0, AutoCommit => 0 });
17-
plan tests => 120;
17+
plan tests => 124;
1818

1919
ok(defined $dbh, "Connected to database");
2020

@@ -75,4 +75,24 @@ SQL
7575

7676
ok($dbh->do("DROP TABLE dbd_mysql_t35"));
7777

78+
# Issue #205: A column named "limits" shouldn't be parsed as LIMIT.
79+
my $limits = 500;
80+
my $flag = 1;
81+
my $id = 1;
82+
$dbh->do('CREATE TABLE IF NOT EXISTS dbd_mysql_t35_1 ( id INT(10) PRIMARY KEY, lxmxts INT(10), flag ENUM("9","0","1") )');
83+
$dbh->do('INSERT INTO dbd_mysql_t35_1 SET id=?, lxmxts=?, flag=?', undef, $id, $limits, $flag);
84+
my ($set_flag1) = $dbh->selectrow_array('SELECT flag FROM dbd_mysql_t35_1 WHERE id=?', undef, $id);
85+
86+
is($set_flag1, $flag, 'flag set without limits involved');
87+
88+
ok($dbh->do('DROP TABLE dbd_mysql_t35_1'));
89+
90+
$dbh->do('CREATE TABLE IF NOT EXISTS dbd_mysql_t35_2 ( id INT(10) PRIMARY KEY, limits INT(10), flag ENUM("9","0","1") )');
91+
$dbh->do('INSERT INTO dbd_mysql_t35_2 SET id=?, limits=?, flag=?', undef, $id, $limits, $flag);
92+
my ($set_flag2) = $dbh->selectrow_array('SELECT flag FROM dbd_mysql_t35_2 WHERE id=?', undef, $id);
93+
94+
is($set_flag2, $flag, 'flag set with limits involved');
95+
96+
ok($dbh->do('DROP TABLE dbd_mysql_t35_2'));
97+
7898
ok($dbh->disconnect);

0 commit comments

Comments
 (0)