Hi,

I don't know if that can be helpfull but, if the RevDB feets all my PostgreSQL's related needs under the MacOS X platform, i use the following method under the linux platform as a workaround to the difficulties you are experimented (and because i had to connect PostgreSQL from Metacard, years ago) :

To stick in the preopenstack main's stack handler :

if the platform is "Linux" then put "psql -h localhost projetsdac -U postgres" into PgPath
else
if PGLinkOpen is a number then get revdb_disconnect("projetsdac")
put revOpenDatabase("PostgreSQL","localhost","projetsdac","postgres","postg res") into PGLinkOpen
end if

To send the requests to the PostgreSQL server trought the psql's command line client (localhost only, because security tasks + TCP/IP activated in the postgres "hba.conf" file) :


The main SQL's parser script to stick in the main stack script :

function presave r
  set itemdel to "¶"
  put item 1 of r into s
  put item 2 of r into t

  set itemdel to "&"
  replace numtochar(10) with "##10;#" in s
  replace "\'" with "##11;#" in s
  replace numtochar(34) with "##34;#" in s
  replace "##11;###11;#" with "" in s

  if the platform is "macos" then put mactoiso(isotomac(s)) into s

if "NRC=insert" is in s then put item itemoffset("rneetabl=",s) of s & return into datatosave

  repeat for each item i in s
    if char 1 to 4 of i is t then put i & return after datatosave
  end repeat

  repeat for each char c in datatosave
    try
      if c is "_"
      then put " " after datatosavec
      else if chartonum(c) > 223
      then put "&#" & chartonum(c) & ";" after datatosavec
      else if chartonum(c) > 191
      then put "&#" & chartonum(c) & ";" after datatosavec
      else if chartonum(c) = 39
      then put "&#" & chartonum(c) & ";" after datatosavec
      else put c after datatosavec
    catch errornum
      if c is not char 1 of datatosave
      then if c is not char -1 of datatosave
      then put "_" after datatosavec
    end try
  end repeat

set itemdelimiter to "/"
put item 2 of the short date & "/" & item 1 of the short date & "/" & item 3 of the short date into aa
if length(item 1 of aa) = 1 then put "0" before item 1 of aa
if length(item 2 of aa) = 1 then put "0" before item 2 of aa
put "20" before item 3 of aa


if "rneetabl" is in datatosavec then
put " ( " into insertcolnames
put " values ( " into insertcoldatas
repeat for each line l in datatosavec
if l is line -1 of datatosavec then
put char 1 to 8 of l && " ) " after insertcolnames
put "'" & aa & "' ) " after insertcoldatas
else
put char 1 to 8 of l && " , " after insertcolnames
put "'" & char 10 to -1 of l & "' , " after insertcoldatas
end if
end repeat
put insertcolnames & insertcoldatas into updatecols
else
repeat for each line l in datatosavec
if l is line -1 of datatosavec then put char 1 to 8 of l && "= '" & aa & "'" after updatecols
else put char 1 to 8 of l && "= '" & char 10 to -1 of l & "' , " after updatecols
end repeat
end if


  return updatecols
end presave



function parsesql s
global PgPath,PGLinkOpen
repeat for each char c in s
try
if chartonum(c) > 223
then put "&#" & chartonum(c) & ";" after t
else if chartonum(c) > 191
then put "&#" & chartonum(c) & ";" after t
else put c after t
catch errornum
if c is not char 1 of s
then if c is not char -1 of s
then put "_" after t
end try
end repeat
replace "\" with "" in t
replace "[" with "&" in t
replace "]" with "\" in t
if the platform is "MacOS" then
if "select" is not in t then get revdb_QueryBLOB(PGLinkOpen,t)
else
put revdb_QueryList("|",return,PGLinkOpen,t) into pgreply
repeat for each line l in pgreply
put char 1 to -1+offset("|",l) of l && char offset("|",l) to -1 of l & return after d
end repeat
return d & "(" & the num of lines in pgreply && "rows)"
end if
else return shell("echo" && quote && t && quote && "|" && PgPath)
end parsesql

and some standard SQL requests using the upon SQL's parser (examples) :

One :

put parsesql("select * from cpacpcst where rneetabl ilike '%" & testne & "%'") into sreply

...and an other :

if char 5 to -1 of item itemoffset("NRC=",PostIn) of PostIn is "insert" then get parsesql("insert into cpacpcst" && presave(PostIn & "¶dems"))
else get parsesql("update cpacpcst set" && presave(PostIn & "¶dems") && "where recordid='" & char 5 to -1 of item itemoffset("NRC=",PostIn) of PostIn & "'")

All works very fine in production mode with up to hundreds connections peer seconds (75% write-mode), since 09/2000, only under the linux platform, the RevDB doing a best job than the upon scripts under the Panther platform.


Best Regards,

Pierre

Le 25 août 04, à 20:19, Frank D. Engel, Jr. a écrit :

Okay, here is an example of what is happening.

The attached revolution file contains a button and a text field (used as a debugging log type of thing).

Again, I use Studio version 2.2.1 under Mac OS X, and I built three versions of the standalone: Mac OS X, Windows, and Linux.

The Windows and Mac OS X versions work "as advertised", but the Linux version seems to exit the handlers after dumping the first line of text to the log field. If I comment out the line with the revOpenDatabase and uncomment the second line, then it does not try to connect, so the rest of the script works fine.

I could understand better if I was getting an error message back from revOpenDatabase, but *all* running handlers seem to be exiting -- not just the one containing the function call.

If it would help, I could *try* to get a Solaris/SPARC or Irix opinion on the issue, but it will take some time, as I will need to set up the hardware (I have those systems disconnected right now), and I don't think I even have Solaris installed on my SparcStation (it would be version 8, on my painfully slow SS LX).

On Aug 24, 2004, at 6:47 PM, Frank D. Engel, Jr. wrote:

Yes, but even after I changed the text to all lower-case, it still doesn't work.

I hadn't even thought of the case sensitivity -- good catch, but still not working :-(

On Aug 24, 2004, at 4:17 PM, Troy Rollins wrote:


On Aug 24, 2004, at 3:59 PM, [EMAIL PROTECTED] wrote:

Linux just seems
to be more case-sensitive than Mac or Win.

That would be because it is. ;-) -- Troy RPSystems, Ltd. http://www.rpsystems.net

_______________________________________________
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution


-- Bien cordialement, Pierre Sahores

100, rue de Paris
F - 77140 Nemours

[EMAIL PROTECTED]

GSM:   +33 6 03 95 77 70
Pro:      +33 1 64 45 05 33
Fax:      +33 1 64 45 05 33

WEB/EAI services & ACID DB over IP
"Mutualiser les deltas de productivité"

_______________________________________________
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to