home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume41 / shql / patch01 next >
Encoding:
Internet Message Format  |  1994-03-06  |  8.5 KB

  1. From: root@candle.uucp (Bruce Momjian)
  2. Newsgroups: comp.sources.misc
  3. Subject: v41i156:  shql - Interactively read and execute SQL commands, Patch01
  4. Date: 6 Mar 1994 22:24:15 -0600
  5. Organization: a consultant's basement
  6. Sender: kent@sparky.sterling.com
  7. Approved: kent@sparky.sterling.com
  8. Message-ID: <2lea9f$fdm@sparky.sterling.com>
  9. X-Md4-Signature: e88ed7ba2218ec183770ec52504b938a
  10.  
  11. Submitted-by: root@candle.uucp (Bruce Momjian)
  12. Posting-number: Volume 41, Issue 156
  13. Archive-name: shql/patch01
  14. Environment: SQL, UNIX
  15. Patch-To: shql: Volume 34, Issue 91
  16.  
  17. Here is shql 1.2.  It is supplied as a context diff to shql 1.1, which
  18. appeared in Volume 34 of comp.sources.misc in January of 1993.
  19.  
  20. The new version fixes bugs with subselects, multi-table joins, and the
  21. -q option.  See the CHANGES file for more info.
  22.  
  23. SHQL is an interactive SQL database engine.  Written as a Unix shell
  24. script, SHQL interprets SQL commands and manipulates flat files based on
  25. those commands.  SHQL is limited in its understanding of SQL constructs.
  26. All this is outlined in the README file contained in the distribution. 
  27. A demo file is also included to show some examples.
  28.  
  29. This patch should be applied in a directory containing shql 1.1 source
  30. code. 
  31. ---------------------------------------------------------------------------
  32.  
  33. *** CHANGES.old    Wed Mar  2 15:00:48 1994
  34. --- CHANGES    Wed Mar  2 14:59:47 1994
  35. ***************
  36. *** 1,3 ****
  37. --- 1,11 ----
  38. + New to version 1.2
  39. + -----------------------------------
  40. + fixed bug where -q option causes first row to always print
  41. + fixed subselect bug on first row
  42. + fixed bug with subselect's with where clauses
  43. + fixed bug in multi-table joins
  44.   New to version 1.1
  45.   -----------------------------------
  46.   Now runs under ksh as well as sh.
  47. *** README.old    Wed Mar  2 15:00:56 1994
  48. --- README    Wed Mar  2 14:59:51 1994
  49. ***************
  50. *** 1,4 ****
  51. !                               S H Q L  version 1.1
  52.   
  53.       Shql is a program that reads SQL commands interactively and
  54.       executes those commands by creating and manipulating Unix files.
  55. --- 1,4 ----
  56. !                               S H Q L  version 1.2
  57.   
  58.       Shql is a program that reads SQL commands interactively and
  59.       executes those commands by creating and manipulating Unix files.
  60. ***************
  61. *** 22,34 ****
  62.       can be used by other programs by caputuring all lines that begin
  63.       the pipe symbol.
  64.   
  65. !       The program is patterned after Ingres' interactive sql terminal
  66.       monitor program.  Terminal monitor commands begin with either a
  67. !     forward or back-slash.  Forward slashes may appear at the end of a
  68. !     commend line. Back-slashes are accepted for compatability.  The /g
  69. !     is the 'go' command, /p is print, and /q is quit.  Try 'help commands' 
  70. !     for a full list.  Because of this, if you need to put a slash as
  71. !     the second to last caracter on a line, you should add a space
  72.       between the slash and the last character.
  73.       
  74.       To get started, invoke shql with a database name.  Use the directory 
  75. --- 22,34 ----
  76.       can be used by other programs by caputuring all lines that begin
  77.       the pipe symbol.
  78.   
  79. !       The program is patterned after Ingres's interactive sql terminal
  80.       monitor program.  Terminal monitor commands begin with either a
  81. !     forward or backward-slash.  Forward slashes may appear at the end of
  82. !     a commend line. Back-slashes are accepted for compatability.  The /g
  83. !     is the 'go' command, /p is print, and /q is quit.  Try 'help commands'
  84. !     for a full list.  Because of this, if you need a slash as the
  85. !     second to last caracter on a line, you should add a space
  86.       between the slash and the last character.
  87.       
  88.       To get started, invoke shql with a database name.  Use the directory 
  89. ***************
  90. *** 78,84 ****
  91.       tables.  This is used only for display purposes.  Shql is
  92.       case-sensitive, and expects SQL key words to be in lower case.
  93.       
  94. !     Commands can be piped into shql, and the table data files are
  95.       tab delimited, so awk scripts can be used to generate reports 
  96.       directly from the tables.  To operate on non-shql data files,
  97.       create a dummy table with the proper fields, then copy your file
  98. --- 78,84 ----
  99.       tables.  This is used only for display purposes.  Shql is
  100.       case-sensitive, and expects SQL key words to be in lower case.
  101.       
  102. !     Commands can be piped into shql.  The table data files are
  103.       tab delimited, so awk scripts can be used to generate reports 
  104.       directly from the tables.  To operate on non-shql data files,
  105.       create a dummy table with the proper fields, then copy your file
  106. *** shql.old    Wed Mar  2 15:01:05 1994
  107. --- shql    Wed Mar  2 14:59:55 1994
  108. ***************
  109. *** 1,13 ****
  110.   #!/bin/sh
  111.   # use /bin/sh or /bin/ksh
  112.   #
  113. ! # shql - version 1.1
  114.   #
  115.   
  116.   # DEFINE THESE
  117.   SHQL_ROOT="/u/shql"        # system-wide database location
  118.   EDITOR="${EDITOR:=/usr/bin/vi}" # default editor if EDITOR not defined
  119. ! SHELL="${SHELL:=/bin/sh}"     # default editor if EDITOR not defined
  120.   
  121.   # Unix table file postfixes:  @ is attrib, ~ is data, % is view
  122.   
  123. --- 1,17 ----
  124.   #!/bin/sh
  125.   # use /bin/sh or /bin/ksh
  126.   #
  127. ! # shql - version 1.2
  128.   #
  129. + # by Bruce Momjian, root@candle.uucp (root%candle.uucp@bts.com)
  130. + #
  131. + # $Id: shql,v 1.9 1994/02/15 20:04:45 root Exp root $
  132.   
  133.   # DEFINE THESE
  134.   SHQL_ROOT="/u/shql"        # system-wide database location
  135.   EDITOR="${EDITOR:=/usr/bin/vi}" # default editor if EDITOR not defined
  136. ! SHELL="${SHELL:=/bin/sh}"     # default editor if SHELL not defined
  137.   
  138.   # Unix table file postfixes:  @ is attrib, ~ is data, % is view
  139.   
  140. ***************
  141. *** 179,188 ****
  142.   # lookup_field
  143.   #**************************************************************************
  144.   lookup_field(){
  145. !     if [ ! -f $TABLE% ]
  146. !     then    RESULT="`grep -n \"^$1    \" $TABLE@`"
  147. !     else     RESULT="`grep -n \"^$1    \" $TABLE@ | sed 1q`"
  148. !     fi
  149.       if [ ! "$RESULT" ] 
  150.       then     OUTFIELD="$1"
  151.           return 1
  152. --- 183,189 ----
  153.   # lookup_field
  154.   #**************************************************************************
  155.   lookup_field(){
  156. !     RESULT="`grep -n \"^$1    \" $TABLE@ | sed 1q`"
  157.       if [ ! "$RESULT" ] 
  158.       then     OUTFIELD="$1"
  159.           return 1
  160. ***************
  161. *** 304,309 ****
  162. --- 305,311 ----
  163.                   COMP="=="
  164.                   LOGIC="||"
  165.                   [ "X$LAST" = "Xnot" ] && COMP="=" && LOGIC="&&"
  166. +                 [ "$#" -eq 0 ] && set "\"__()__\""
  167.                   for VALUE
  168.                   do
  169.                       [ "X$INWHERE" != "X" ] && 
  170. ***************
  171. *** 578,584 ****
  172.   # select_
  173.   #**************************************************************************
  174.   select_(){
  175. ! [ "$DEBUG" = "Y" ] && set -x           # uncomment for debugging
  176.       UNION="Y"
  177.       while [ "$UNION" != "" ]
  178.       do
  179. --- 580,586 ----
  180.   # select_
  181.   #**************************************************************************
  182.   select_(){
  183. ! [ "$DEBUG" = "Y" ] && set -x
  184.       UNION="Y"
  185.       while [ "$UNION" != "" ]
  186.       do
  187. ***************
  188. *** 684,697 ****
  189.           done
  190.           shift 2
  191.           WHERE=""
  192.           SORT=""
  193.           while [ $# -ne 0 ]
  194.           do    
  195. !             if [ "X$1" = "Xwhere" ]
  196.               then
  197.                   where "$@"
  198.                   [ "$?" -ne 0 ] && return 1 
  199. !                 WHERE="$WHERE || NR == 1"
  200.                   shift
  201.               elif [ "X$1" = "Xorder" ]
  202.               then     [ "X$2" != "Xby" ] && 
  203. --- 686,702 ----
  204.           done
  205.           shift 2
  206.           WHERE=""
  207. +         WHERE_USED=""
  208.           SORT=""
  209.           while [ $# -ne 0 ]
  210.           do    
  211. !             if [ "X$1" = "Xwhere" -a "$WHERE_USED" = "" ]
  212.               then
  213.                   where "$@"
  214.                   [ "$?" -ne 0 ] && return 1 
  215. !                 [ "$QUIET" = "" -a "$SUBSELECT" = "" ] && 
  216. !                         WHERE="$WHERE || NR == 1"
  217. !                 WHERE_USED="Y"
  218.                   shift
  219.               elif [ "X$1" = "Xorder" ]
  220.               then     [ "X$2" != "Xby" ] && 
  221. ***************
  222. *** 723,728 ****
  223. --- 728,734 ----
  224.               elif [ "X$1" = "Xunion" ]
  225.               then    shift
  226.                   UNION="Y"
  227. +                 WHERE_USED=""
  228.                   break
  229.               else    shift
  230.               fi
  231. ***************
  232. *** 758,765 ****
  233.               END    { printf \"( %1d rows)\\n\", (cnt - 1) \
  234.               >\"/tmp/$$row\" }" - $TABLEFILE | eval "$DIST" \
  235.                   && if [ "$DISTINCT" = "" ]
  236. !                 then    cat /tmp/$$row
  237. !                 else     X=`expr \`cat /tmp/$$row|wc -l\` - 1`
  238.                       echo '('$X' rows)' 
  239.                   fi
  240.           fi
  241. --- 764,774 ----
  242.               END    { printf \"( %1d rows)\\n\", (cnt - 1) \
  243.               >\"/tmp/$$row\" }" - $TABLEFILE | eval "$DIST" \
  244.                   && if [ "$DISTINCT" = "" ]
  245. !                    then    cat /tmp/$$row
  246. !                    else if [ "$QUIET" = "" ]
  247. !                     then    X=`expr \`cat /tmp/$$row|wc -l\` - 1`
  248. !                     else    X=`expr \`cat /tmp/$$row|wc -l\``
  249. !                     fi
  250.                       echo '('$X' rows)' 
  251.                   fi
  252.           fi
  253. ***************
  254. *** 846,849 ****
  255.           *)         echo "Missing or unrecognized command." 1>&2 ;;
  256.       esac
  257.   done
  258. --- 855,857 ----
  259.  
  260. -- 
  261. Bruce Momjian                          |  830 Blythe Avenue
  262. root%candle.uucp@bts.com               |  Drexel Hill, Pennsylvania 19026 
  263.   +  If your life is a hard drive,     |  (215) 353-9879(w) 
  264.   +  Christ can be your backup.        |  (215) 853-3000(h)
  265.  
  266. exit 0 # Just in case...
  267.