Skip to content

Commit 16affe5

Browse files
committed
Merge pull request #199 from hunner/ansi_quotes
Fix SQL when ANSI_QUOTES is enabled in mysql config.
2 parents 18866d2 + d68aa83 commit 16affe5

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

lib/puppet/provider/database_grant/mysql.rb

+5-5
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def row_exists?
9696
if name[:type] == :db
9797
fields << :db
9898
end
99-
not mysql([defaults_file, "mysql", '-NBe', 'SELECT "1" FROM %s WHERE %s' % [ name[:type], fields.map do |f| "%s=\"%s\"" % [f, name[f]] end.join(' AND ')]].compact).empty?
99+
not mysql([defaults_file, "mysql", '-NBe', "SELECT '1' FROM %s WHERE %s" % [ name[:type], fields.map do |f| "%s='%s'" % [f, name[f]] end.join(' AND ')]].compact).empty?
100100
end
101101

102102
def all_privs_set?
@@ -118,9 +118,9 @@ def privileges
118118

119119
case name[:type]
120120
when :user
121-
privs = mysql([defaults_file, "mysql", "-Be", 'select * from mysql.user where user="%s" and host="%s"' % [ name[:user], name[:host] ]].compact)
121+
privs = mysql([defaults_file, "mysql", "-Be", "select * from mysql.user where user='%s' and host='%s'" % [ name[:user], name[:host] ]].compact)
122122
when :db
123-
privs = mysql([defaults_file, "mysql", "-Be", 'select * from mysql.db where user="%s" and host="%s" and db="%s"' % [ name[:user], name[:host], name[:db] ]].compact)
123+
privs = mysql([defaults_file, "mysql", "-Be", "select * from mysql.db where user='%s' and host='%s' and db='%s'" % [ name[:user], name[:host], name[:db] ]].compact)
124124
end
125125

126126
if privs.match(/^$/)
@@ -149,11 +149,11 @@ def privileges=(privs)
149149
case name[:type]
150150
when :user
151151
stmt = 'update user set '
152-
where = ' where user="%s" and host="%s"' % [ name[:user], name[:host] ]
152+
where = " where user='%s' and host='%s'" % [ name[:user], name[:host] ]
153153
all_privs = user_privs
154154
when :db
155155
stmt = 'update db set '
156-
where = ' where user="%s" and host="%s" and db="%s"' % [ name[:user], name[:host], name[:db] ]
156+
where = " where user='%s' and host='%s' and db='%s'" % [ name[:user], name[:host], name[:db] ]
157157
all_privs = db_privs
158158
end
159159

spec/unit/puppet/provider/database_grant/mysql_spec.rb

+11-11
Original file line numberDiff line numberDiff line change
@@ -41,54 +41,54 @@
4141
end
4242

4343
it 'should query set priviliges' do
44-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', 'select * from mysql.user where user="user" and host="host"']).returns <<-EOT
44+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "select * from mysql.user where user='user' and host='host'"]).returns <<-EOT
4545
Host User Password Select_priv Insert_priv Update_priv
4646
host user Y N Y
4747
EOT
4848
@provider.privileges.should == [ 'Select_priv', 'Update_priv' ]
4949
end
5050

5151
it 'should recognize when all priviliges are set' do
52-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', 'select * from mysql.user where user="user" and host="host"']).returns <<-EOT
52+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "select * from mysql.user where user='user' and host='host'"]).returns <<-EOT
5353
Host User Password Select_priv Insert_priv Update_priv
5454
host user Y Y Y
5555
EOT
5656
@provider.all_privs_set?.should == true
5757
end
5858

5959
it 'should recognize when all privileges are not set' do
60-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', 'select * from mysql.user where user="user" and host="host"']).returns <<-EOT
60+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "select * from mysql.user where user='user' and host='host'"]).returns <<-EOT
6161
Host User Password Select_priv Insert_priv Update_priv
6262
host user Y N Y
6363
EOT
6464
@provider.all_privs_set?.should == false
6565
end
6666

6767
it 'should be able to set all privileges' do
68-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-NBe', 'SELECT "1" FROM user WHERE user="user" AND host="host"']).returns "1\n"
69-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "update user set Select_priv = 'Y', Insert_priv = 'Y', Update_priv = 'Y' where user=\"user\" and host=\"host\""])
68+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-NBe', "SELECT '1' FROM user WHERE user='user' AND host='host'"]).returns "1\n"
69+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "update user set Select_priv = 'Y', Insert_priv = 'Y', Update_priv = 'Y' where user='user' and host='host'"])
7070
provider_class.expects(:mysqladmin).with(["--defaults-file=#{root_home}/.my.cnf", "flush-privileges"])
7171
@provider.privileges=(['all'])
7272
end
7373

7474
it 'should be able to set partial privileges' do
75-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-NBe', 'SELECT "1" FROM user WHERE user="user" AND host="host"']).returns "1\n"
76-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "update user set Select_priv = 'Y', Insert_priv = 'N', Update_priv = 'Y' where user=\"user\" and host=\"host\""])
75+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-NBe', "SELECT '1' FROM user WHERE user='user' AND host='host'"]).returns "1\n"
76+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "update user set Select_priv = 'Y', Insert_priv = 'N', Update_priv = 'Y' where user='user' and host='host'"])
7777
provider_class.expects(:mysqladmin).with(["--defaults-file=#{root_home}/.my.cnf", "flush-privileges"])
7878
@provider.privileges=(['Select_priv', 'Update_priv'])
7979
end
8080

8181
it 'should be case insensitive' do
82-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-NBe', 'SELECT "1" FROM user WHERE user="user" AND host="host"']).returns "1\n"
83-
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "update user set Select_priv = 'Y', Insert_priv = 'Y', Update_priv = 'Y' where user=\"user\" and host=\"host\""])
82+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-NBe', "SELECT '1' FROM user WHERE user='user' AND host='host'"]).returns "1\n"
83+
provider_class.expects(:mysql).with(["--defaults-file=#{root_home}/.my.cnf", 'mysql', '-Be', "update user set Select_priv = 'Y', Insert_priv = 'Y', Update_priv = 'Y' where user='user' and host='host'"])
8484
provider_class.expects(:mysqladmin).with(["--defaults-file=#{root_home}/.my.cnf", 'flush-privileges'])
8585
@provider.privileges=(['SELECT_PRIV', 'insert_priv', 'UpDaTe_pRiV'])
8686
end
8787

8888
it 'should not pass --defaults-file if $root_home/.my.cnf is absent' do
8989
File.stubs(:file?).with("#{root_home}/.my.cnf").returns(false)
90-
provider_class.expects(:mysql).with(['mysql', '-NBe', 'SELECT "1" FROM user WHERE user="user" AND host="host"']).returns "1\n"
91-
provider_class.expects(:mysql).with(['mysql', '-Be', "update user set Select_priv = 'Y', Insert_priv = 'N', Update_priv = 'Y' where user=\"user\" and host=\"host\""])
90+
provider_class.expects(:mysql).with(['mysql', '-NBe', "SELECT '1' FROM user WHERE user='user' AND host='host'"]).returns "1\n"
91+
provider_class.expects(:mysql).with(['mysql', '-Be', "update user set Select_priv = 'Y', Insert_priv = 'N', Update_priv = 'Y' where user='user' and host='host'"])
9292
provider_class.expects(:mysqladmin).with(["flush-privileges"])
9393
@provider.privileges=(['Select_priv', 'Update_priv'])
9494
end

0 commit comments

Comments
 (0)