Корректное закрытие курсора после выполнения запроса.
authorRoman Bazalevsky <rvb@rvb.name>
Sat, 28 Mar 2020 15:43:30 +0000 (18:43 +0300)
committerRoman Bazalevsky <rvb@rvb.name>
Sat, 28 Mar 2020 15:43:30 +0000 (18:43 +0300)
bin/weather-lcd

index 9abd84fac3d9cad802fe0c0e454ba0d62ff55723..d3283ca588677f44ef1b67292be6c69fdb432ff8 100755 (executable)
@@ -19,7 +19,7 @@ graph_duration = uci.get(config_name,"display","graph_duration")
 if graph_duration and not(weather_db == "") then
   pcall(function ()
       local dbdriver = require "luasql.sqlite3"
 if graph_duration and not(weather_db == "") then
   pcall(function ()
       local dbdriver = require "luasql.sqlite3"
-      local env = assert(dbdriver.sqlite3())
+      env = assert(dbdriver.sqlite3())
       log_con = assert(env:connect(weather_db))
     end)  
 end
       log_con = assert(env:connect(weather_db))
     end)  
 end
@@ -193,8 +193,8 @@ function process_graphs()
       local sensor = def["sensor"]
       local param  = def["param"]
       local pageid = sensor.."."..param
       local sensor = def["sensor"]
       local param  = def["param"]
       local pageid = sensor.."."..param
-      local cur = assert (log_con:execute(string.format("select hour,avg(value) val from (select strftime('%%Y-%%m-%%d %%H',time_stamp)||':00' hour,value from log where sensor='%s' and param='%s') group by hour order by hour desc limit 24",sensor,param)))
-      local row = cur:fetch ({}, "a")
+      local sqlcur = assert (log_con:execute(string.format("select hour,avg(value) val from (select strftime('%%Y-%%m-%%d %%H',time_stamp)||':00' hour,value from log where sensor='%s' and param='%s') group by hour order by hour desc limit 24",sensor,param)))
+      local row = sqlcur:fetch ({}, "a")
       local vals = {}
       local maxval = -99999999
       local minval =  99999999
       local vals = {}
       local maxval = -99999999
       local minval =  99999999
@@ -202,7 +202,7 @@ function process_graphs()
       for k=width,1,-1 do
         if row then
           val = row["val"] * def["scale"]
       for k=width,1,-1 do
         if row then
           val = row["val"] * def["scale"]
-          row = cur:fetch ({}, "a")
+          row = sqlcur:fetch ({}, "a")
         else
           val = nil  
         end  
         else
           val = nil  
         end  
@@ -210,6 +210,7 @@ function process_graphs()
         if val and (val > maxval) then maxval = val; end
         if val and (val < minval) then minval = val; end
       end          
         if val and (val > maxval) then maxval = val; end
         if val and (val < minval) then minval = val; end
       end          
+      sqlcur:close()
       minval = math.floor(minval)
       maxval = math.ceil(maxval)
       if height>2 then
       minval = math.floor(minval)
       maxval = math.ceil(maxval)
       if height>2 then
@@ -251,18 +252,18 @@ setup_pages(conn)
 
 while true do
 
 
 while true do
 
-  pcall( function ()
+--  pcall( function ()
 
       vals = process_file()
       process_vals(vals)
 
 
       vals = process_file()
       process_vals(vals)
 
-      if log_con then
+      if weather_db then
         process_graphs()
       end  
       
       os.execute("inotifywait -e MODIFY \""..weather_file.."\"")
   
         process_graphs()
       end  
       
       os.execute("inotifywait -e MODIFY \""..weather_file.."\"")
   
-    end)
+--    end)
 
     socket.sleep(3)
   
 
     socket.sleep(3)