# $Header: /home/cvsroot/tcldb/wisql/Tlib/PGshowTables,v 1.2 1998/02/16 04:40:44 de Exp ${DB}showTables,v 1.1.1.1 1996/10/12 02:26:25 de Exp $
# tcl procs saved on Tue Sep 05 09:33:17 PDT 1995

proc PGshowTables {} {

  global dbpipe1 DB
  global pgmsg
  global mode
  global base
  global PGusers PGtypes
  global MsgW

  set plist ""

# here we should get owner as well 
# and get views as well as tables for normal users
# experts get to see the system tables as well
   if {$mode} {

	set sqlcmd "select relowner,relname from pg_class where relkind = 'r' order by relname"
   } else {
	set sqlcmd "select relowner,relname from pg_class where relkind = 'r' and relisshared = 'f' order by relname"
   }

   set sqt pg_class
  lassign [pgSQL 1] ct han res
  if {[lindex $res 0] == "ERROR"} {
                puts stderr "Serious problem here"
                puts stderr "$sqlcmd"
                puts stderr "$res"
                puts stderr 1
  }

  set atts [pgCols $han]
  foreach a $atts {
	lappend cols [lindex $a 0]
  }
  loop r 0 $ct {

  set row [pgGetI $han $r]
  eval lassign \$row $cols

  set own [keylget PGusers($relowner) usename]
# parse this row and set table name own.tbl
  set tbl $own.$relname
  lappend plist $tbl

  }

  if {[llength $plist] == 0} {
    setMsg $MsgW "No user tables in $base"
    return
  }
  pickList .$base:Tables Tables 200x400 [lsort $plist] setTable

}

