[LON-CAPA-cvs] cvs: loncom / lonsql
www
lon-capa-cvs@mail.lon-capa.org
Mon, 17 Jun 2002 14:00:09 -0000
www Mon Jun 17 10:00:09 2002 EDT
Modified files:
/loncom lonsql
Log:
Towards bug 121
If the query command is 'logquery' instead of an SQL command, lonsql will
go into another program block. Functionality to query logs should be
implemented there.
Also bugfix: a query-reply must ALWAYS have an "\n" in the end, or the
remote end will wait forever. Previous statement "append if $result" might
lead to lengthy timeout results if database is offline.
Index: loncom/lonsql
diff -u loncom/lonsql:1.43 loncom/lonsql:1.44
--- loncom/lonsql:1.43 Fri May 17 10:03:04 2002
+++ loncom/lonsql Mon Jun 17 10:00:09 2002
@@ -3,7 +3,7 @@
# The LearningOnline Network
# lonsql - LON TCP-MySQL-Server Daemon for handling database requests.
#
-# $Id: lonsql,v 1.43 2002/05/17 14:03:04 matthew Exp $
+# $Id: lonsql,v 1.44 2002/06/17 14:00:09 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -290,8 +290,13 @@
print $client "$queryid\n";
&logthis("QUERY: $query");
- &logthis("QUERY: $query");
sleep 1;
+
+# ---------- At this point, query is received, query-ID assigned and sent back
+# $query eq 'logquery' will mean that this is a query against log-files
+
+ unless ($query eq 'logquery') {
+# -------------------------------------------------------- This is an sql query
#prepare and execute the query
my $sth = $dbh->prepare($query);
my $result;
@@ -371,8 +376,17 @@
$result=join("&",@r2) unless $query;
$result.=$customresult;
}
- # reply with result
- $result.="\n" if $result;
+# ------------------------------------------------------------ end of sql query
+ } else {
+# ------------------------------------------------------ beginning of log query
+#
+# do log queries here
+#
+ $result='not_yet_implemented';
+# ------------------------------------------------------------ end of log query
+ }
+ # reply with result, append \n unless already there
+ $result.="\n" unless ($result=~/\n$/);
&reply("queryreply:$queryid:$result",$conserver);
}