From 84abcf87a8cc35209056060a5f0d5dde27ca8768 Mon Sep 17 00:00:00 2001 From: hzchenxingxing Date: Fri, 28 Aug 2015 01:08:17 +0800 Subject: [PATCH] fix many rows result only return one --- lib/hiera/backend/mysql_backend.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/hiera/backend/mysql_backend.rb b/lib/hiera/backend/mysql_backend.rb index 4e43f15..8fa5e9a 100644 --- a/lib/hiera/backend/mysql_backend.rb +++ b/lib/hiera/backend/mysql_backend.rb @@ -18,7 +18,6 @@ def initialize require 'mysql' end end - Hiera.debug("mysql_backend initialized") Hiera.debug("JDBC mode #{@use_jdbc}") end @@ -39,9 +38,8 @@ def lookup(key, scope, order_override, resolution_type) queries.map! { |q| Backend.parse_string(q, scope, {"key" => key}) } queries.each do |mysql_query| - + begin results = query(mysql_query) - unless results.empty? case resolution_type when :array @@ -50,10 +48,21 @@ def lookup(key, scope, order_override, resolution_type) answer << Backend.parse_answer(ritem, scope) end else + if results.respond_to?(:has_key?) answer = Backend.parse_answer(results[0], scope) + else + if results.length < 2 + answer = Backend.parse_answer(results[0], scope) + else + answer = Backend.parse_answer(results, scope) + end + end break end end + rescue + Hiera.debug("error: #{$!}#{mysql_query}") + end end answer