Forum OpenACS Development: Response to OpenACS4.x/Postgres7.x installation guide

I'm tryng get it working as well, I have PostgreSQL7.1 and aolserver 3.31 with ns_cache from aolserver 3.2 and everithing else my nsd.tcl that start working is : -----------

# Modified by Roberto Mello - rmello@cc.usu.edu - June 2000

ns_log notice "nsd.tcl: starting to read config file..."

# 
# If httpport is set to 80, you'll have to start AOLserver as root and pass the user 
# AOLserver will run as in the command line. (e.g. ./nsd -u nsadmin -g nsadmin -t ../nsd.tcl)
# (assuming you're starting AOLserver from the {aolserverdir}/bin directory.

set httpport              8000 
set httpsport             8443 

#
# Make sure your /etc/hostname is setup right, with your full domain. If you want AOLserver 
# to listen to www.foobar.com instead of foobar.com then hard code the appropriate domain  
# in the line below (e.g. set hostname www.foobar.com).
#
set hostname              [ns_info hostname]  
set address               [ns_info address] 

# 
# You can name your server whatever you want, but you'll need a directory with that
# name under {aolserverdir}/servers/ writable by you AOLserver user.
#
# For example: if your AOLserver is in /usr/local/aolserver and your server is "server1"
# you will need a /usr/local/aolserver/servers/server1 directory.
#
set server           "server1" 
set servername       "daderver" 

set dbdatasource	"localhost::wwwrun"
set dbuser		wwwrun
set dbpassword		""
set dbconnections	2
# 
# AOLserver's home and binary directories. Autoconfigurable. 
#
set homedir                 [file dirname [ns_info config]] 
set bindir                  [file dirname [ns_info nsd]] 

#
# Where are your pages going to live ?
#
set pageroot                ${homedir}/servers/${server}/www
set directoryfile           index.adp,index.tcl,index.html,index.htm

# 
# nsssl: Only loads if keyfile.pem and certfile.pem exist.
# If you are using SSL, make sure you have these dirs and files (refer
# to the AOLserver docs)

set sslkeyfile ${homedir}/servers/${server}/modules/nsssl/keyfile.pem

set sslcertfile ${homedir}/servers/${server}/modules/nsssl/certfile.pem 

# 
# Global server parameters 
#

ns_section "ns/parameters" 
        ns_param   home         $homedir 
        ns_param   debug        false 
        ns_param   MailHost     localhost 
        ns_param   ServerLog    ${homedir}/log/server.log 
        ns_param   LogRoll      on

# 
# Thread library (nsthread) parameters 
# 
ns_section "ns/threads" 
        ns_param   mutexmeter      true      ;# measure lock contention 
        #ns_param   stacksize [expr 128*1024] ;# Per-thread stack size for hungry C modules

# 
# MIME types. 
# 
#  Note: AOLserver already has an exhaustive list of MIME types, but in
#  case something is missing you can add it here. 
#

ns_section "ns/mimetypes" 
        ns_param   default         "*/*"     ;# MIME type for unknown extension 
        ns_param   noextension     "*/*"     ;# MIME type for missing extension 
        #ns_param   ".xls"         "application/vnd.ms-excel''

# 
# Tcl Configuration 
# 
ns_section "ns/server/${server}/tcl" 
        ns_param autoclose     "on" 
        ns_param debug         "false" 
 
#
# This is where this server's private Tcl library is. All .tcl files in this directory 
# are parsed when AOLserver starts.
#
        ns_param library "${homedir}/servers/${server}/tcl" 

############################################################ 
# 
# Server-level configuration 
# 
#  There is only one server in AOLserver, but this is helpful when multiple
#  servers share the same configuration file.  This file assumes that only
#  one server is in use so it is set at the top in the "server" Tcl variable
#  Other host-specific values are set up above as Tcl variables, too.
# 
ns_section "ns/servers" 
        ns_param   $server     $servername 

# 
# Server parameters 
# 
ns_section "ns/server/${server}" 
        ns_param   directoryfile        $directoryfile 
        ns_param   pageroot             $pageroot 
        ns_param   globalstats          false     ;# Enable built-in statistics 
        ns_param   urlstats             false     ;# Enable URL statistics 
        ns_param   maxurlstats          1000      ;# Max number of URL's to do stats on
        ns_param   enabletclpages       true      ;# Parse tcl files in pageroot (dangerous)

#
# If you want to customize AOLserver's response to things like "Internal Server Error"
# and other HTTP responses. 

        ns_param   NotFoundResponse               "/global/file-not-found.html"
        ns_param   ServerBusyResponse              "/global/busy.html"
        ns_param   ServerInternalErrorResponse         "/global/error.html"
        ns_param   ForbiddenResponse               "/global/forbidden.html"
        ns_param   UnauthorizedResponse          "/global/unauthorized.html"

# Directory listings -- use an ADP or a Tcl proc to generate them.
#
        #ns_param   directoryadp    $pageroot/dirlist.adp ;# Choose one or the other
        ns_param   directoryproc    _ns_dirlist           ;#  ...but not both! 
        ns_param   directorylisting  fancy                ;# Can be simple or fancy 
# 
# ADP (AOLserver Dynamic Page) configuration 
# 
ns_section "ns/server/${server}/adp" 
        ns_param   map           "/*.adp"  ;# Extensions to parse as ADP's
	ns_param	DefaultParser	fancy 
        #ns_param   map          "/*.html" ;# Any extension can be mapped 
        ns_param   enableexpire  false     ;# Set "Expires: now" on all ADP's 
        ns_param   enabledebug   false     ;# Allow Tclpro debugging with "?debug"

# ADP special pages 
        #ns_param   errorpage      ${pageroot}/errorpage.adp ;# Pretty-print ADP scripting errors

# 
# ADP custom parsers -- see adp.c 
#
# "adp" is faster but lacks some features. "fancy" is a little slower but has
# extra features.
#
ns_section "ns/server/${server}/adp/parsers" 
        ns_param   fancy            ".adp"

# 
# Socket driver module (HTTP)  -- nssock 
# 
ns_section "ns/server/${server}/module/nssock" 
        ns_param   port         $httpport 
        ns_param   hostname     $hostname 
        ns_param   address      $address

# 
# Socket driver module (HTTPS) -- nsssl 
# 
#  nsssl does not load unless sslkeyfile/sslcertfile exist (above).
# 
ns_section "ns/server/${server}/module/nsssl" 
        ns_param   port        $httpsport 
        ns_param   hostname    $hostname 
        ns_param   address     $address 
        ns_param   keyfile     $sslkeyfile 
        ns_param   certfile    $sslcertfile

# 
# Database drivers 
#  The database driver is specified here. PostgreSQL driver being loaded.
#  Make sure you have the driver compiled and put it in {aolserverdir}/bin
#
ns_section "ns/db/drivers" 
    ns_param   postgresql     ${bindir}/postgres.so  ;# Load PostgreSQL driver
    
ns_section "ns/db/driver/postgresql"
    ns_param	pgbin		/usr/local/pgsql/bin

# 
# Database Pools: This is how AOLserver  "talks" to the RDBMS. 
#  The three pools here are examples but they work. 
#  Make sure to replace "yourdb" and "yourpassword" with the actual values for 
#  your db name and the password for it.
#  AOLserver can have different pools connecting to different databases and even different
#  different database servers.
# 
ns_section "ns/db/pools" 
    ns_param   main       "Main Pool" 
    ns_param   log        "Log Pool" 
    ns_param   subquery   "Subquery Pool"

ns_section "ns/db/pool/main" 
    ns_param Driver postgresql 
    ns_param Connections $dbconnections                  ;# 5 is a good number. Increase according to your needs
    ns_param DataSource $dbdatasource   ;# Replace 'yourdb' with the name of your database in PG
    ns_param User $dbuser                   ;# User and password AOLserver will use to connect
    ns_param Password $dbpassword 
    ns_param Verbose On                    ;# Set it to On to see all queries. Good for debugging SQL.
    ns_param LogSQLErrors On 
    ns_param ExtendedTableInfo On 
   # ns_param MaxOpen 1000000000            ;# Uncommenting these two cause AOLserver to keep the
   # ns_param MaxIdle 1000000000            ;# db connection open. Can be a good thing, up tp your needs.

ns_section "ns/db/pool/log" 
    ns_param Driver postgresql 
    ns_param Connections $dbconnections                  ;# 5 is a good number. Increase according to your needs
    ns_param DataSource $dbdatasource   ;# Replace 'yourdb' with the name of your database in PG
    ns_param User $dbuser                   ;# User and password AOLserver will use to connect
    ns_param Password $dbpassword 
    ns_param Verbose On 
    ns_param LogSQLErrors On 
    ns_param ExtendedTableInfo On 
   # ns_param MaxOpen 1000000000 
   # ns_param MaxIdle 1000000000 

ns_section "ns/db/pool/subquery" 
    ns_param Driver postgresql 
    ns_param Connections $dbconnections                  ;# 5 is a good number. Increase according to your needs
    ns_param DataSource $dbdatasource   ;# Replace 'yourdb' with the name of your database in PG
    ns_param User $dbuser                   ;# User and password AOLserver will use to connect
    ns_param Password $dbpassword 
    ns_param Verbose On 
    ns_param LogSQLErrors On 
    ns_param ExtendedTableInfo On
   # ns_param MaxOpen 1000000000 
   # ns_param MaxIdle 1000000000 

ns_section "ns/server/${server}/db"
        #ns_param Pools          "*"    ;# Load all pools specified above
        ns_param Pools          "*"    ;# Load all pools specified above
        ns_param DefaultPool    "main"    ;# Which will be the default pool?

#
# nscp: AOLserver Control Port - very useful for testing and evaluating.
# Uncomment the sample password below and do a "telnet localhost 9999"
# log in with "nsadmin", password "x", type "ns_crypt newpassword salt"
# and paste the new encrypted string below.
#
# Sample User="nsadmin", password="x" 
 set nscp_user              "nsadmin:t2GqvvaiIUbF2:"

# nscp: loads only if nscp_user is set
#

if { $nscp_user != "" } {
    ns_param nscp ${bindir}/nscp.so
} else {
    ns_log warning "nsd.tcl: nscp not loaded because user/password is not set."
}

# 
# Control port -- nscp 
#  nscp does not load unless nscp_user is a valid user. 
# 
ns_section "ns/server/${server}/module/nscp" 
        ns_param   port            9999 
        ns_param   address         "127.0.0.1" ;# LOCALHOST IS RECOMMENDED      

ns_section "ns/server/${server}/module/nscp/users" 
        ns_param   user            $nscp_user

# 
# Access log -- nslog 
# 
ns_section "ns/server/${server}/module/nslog" 
        ns_param   rolllog         true      ;# Should we roll log? 
        ns_param   rollonsignal    true      ;# Roll log on SIGHUP 
        ns_param   rollhour        0         ;# Time to roll log 
        ns_param   maxbackup       5         ;# Max number to keep around when rolling 

# 
# CGI interface -- nscgi, if you have legacy stuff. Tcl or ADP files inside 
# AOLserver are vastly superior to CGIs. 
# 
#ns_section "ns/server/${server}/module/nscgi" 
#       ns_param   map "GET  /cgi-bin/ /web/$server/cgi-bin"
#       ns_param   map "POST /cgi-bin/ /web/$server/cgi-bin" 
#       ns_param   Interps CGIinterps

#ns_section "ns/interps/CGIinterps" 
#       ns_param .pl "/usr/bin/perl"

# 
# Modules to load 
# 
ns_section "ns/server/${server}/modules" 
        ns_param   nssock          	${bindir}/nssock.so 
        ns_param   nslog           	${bindir}/nslog.so 
        ns_param   nsperm          	${bindir}/nsperm.so 
#        ns_param   nscgi           	${bindir}/nscgi.so 
#	ns_param   dqd_utils  		dqd_utils[expr {int($tcl_version)}].so
	ns_param	ns_xml		${bindir}/nsxml.so
	ns_param	ns_sha1		${bindir}/nssha1.so
	ns_param	ns_cache	${bindir}/nscache.so
	ns_param	ns_rewrite	${bindir}/nsrewrite.so
#
## nsssl: loads only if requisite files already exist (see top of this
# file). 
#
if { [file exists $sslcertfile] && [file exists $sslkeyfile] } { 
    ns_param nsssl ${bindir}/nsssle.so 
} else { 
    ns_log warning "nsd.tcl: nsssl not loaded because key/cert files do not exist."
}

# 
# If you have an auxiliary config file, you can tell AOLserver to source it
# with the line:
#
# source /path/to/your/file/yourfile.tcl
#

ns_log notice "nsd.tcl: Now reading aux config ServerDAD."

#source /home/aolserver/servers/server1/parameters/server1.tcl

ns_log notice "nsd.tcl: finished reading config file."
------------- It goes ok till tryng to create the administrator account when I get the following message: ----------


    Database operation "0or1row" failed (exception NSDB, "Query was not a statement returning rows.")
        while executing
    "ns_pg_bind 0or1row nsdb0 {select email from cc_users where rownum = 1}"
        ("uplevel" body line 1)
        invoked from within
    "uplevel 2 [list ns_pg_bind $type $db $sql] $args"
        invoked from within
    "db_exec 0or1row $db $full_statement_name $sql"
        invoked from within
    "set selection [db_exec 0or1row $db $full_statement_name $sql]"
        ("uplevel" body line 2)
        invoked from within
    "uplevel 1 $code_block "
        invoked from within
    "db_with_handle db {
            set selection [db_exec 0or1row $db $full_statement_name $sql]
        }"
        (procedure "db_0or1row" line 22)
        invoked from within
    "db_0or1row user_exists "select email from cc_users where rownum = 1""
        (file "/opt/aolserver/servers/server1/packages/acs-bootstrap-installer/installer/create-administrator.tcl" line 1)
-------- Ok I know whats the problem I'm solving it change all the queries that refer to "rownum" to use limit or another trick. But I was think that maybe could be a good idea to have postgres generating virtual row numbers as well.