Files
harbour-core/harbour/contrib/hbpgsql/tests/stress.prg
Viktor Szakats b1bfe8f54b 2012-11-29 00:49 UTC+0100 Viktor Szakats (harbour syenar.net)
* contrib/hbwin/hbole.ch
    ! missing svn props

  * contrib/hbwin/hbsim.ch
  * contrib/hbfoxpro/hbfoxpro.ch
  * contrib/hbmysql/mysql.ch
    ! added missing self-guards
      This was a requirement, but now it really must
      be done, if a header wants to be put in headers=
      directive in a .hbc file for auto-inclusion.

  * contrib/hbmysql/tests/dbf2mysq.prg
    ! missing #require directive

  * contrib/hbblat/hbblat.hbc
  * contrib/hbblink/hbblink.hbc
  * contrib/hbbz2/hbbz2.hbc
  * contrib/hbcairo/hbcairo.hbc
  * contrib/hbcurl/hbcurl.hbc
  * contrib/hbexpat/hbexpat.hbc
  * contrib/hbfimage/hbfimage.hbc
  * contrib/hbfoxpro/hbfoxpro.hbc
  * contrib/hbgd/hbgd.hbc
  * contrib/hbhpdf/hbhpdf.hbc
  * contrib/hblzf/hblzf.hbc
  * contrib/hbmagic/hbmagic.hbc
  * contrib/hbmlzo/hbmlzo.hbc
  * contrib/hbmxml/hbmxml.hbc
  * contrib/hbmysql/hbmysql.hbc
  * contrib/hbmzip/hbmzip.hbc
  * contrib/hbnetio/hbnetio.hbc
  * contrib/hbpgsql/hbpgsql.hbc
  * contrib/hbsqlit3/hbsqlit3.hbc
  * contrib/hbssl/hbssl.hbc
  * contrib/hbtpathy/hbtpathy.hbc
  * contrib/hbxdiff/hbxdiff.hbc
  * contrib/hbzebra/hbzebra.hbc
  * contrib/rddsql/rddsql.hbc
    + added .ch headers to .hbc files for
      autoload.
    ; For some contribs it still has to do
      for several reasons, f.e. .ch file overrides
      standard features so they must stay optional,
      or they must be optional for other reasons,
      or they have multiple headers and I didn't
      decide yet which one of those should be
      standard.

  * contrib/hbexpat/tests/test.prg
  * contrib/hbexpat/tests/tohash.prg
  * contrib/hbfimage/tests/fitest.prg
  * contrib/hbgd/tests/animgif.prg
  * contrib/hbgd/tests/antialia.prg
  * contrib/hbgd/tests/counter.prg
  * contrib/hbgd/tests/gdtest.prg
  * contrib/hbgd/tests/gdtestcl.prg
  * contrib/hbgd/tests/test_out.prg
  * contrib/hbgd/tests/testdpi.prg
  * contrib/hbgd/tests/tostring.prg
  * contrib/hbgd/tests/tpoly.prg
  * contrib/hbhpdf/tests/harupdf.prg
  * contrib/hblzf/tests/test.prg
  * contrib/hbmlzo/tests/test.prg
  * contrib/hbpgsql/tests/cache.prg
  * contrib/hbpgsql/tests/stress.prg
  * contrib/hbpgsql/tests/test.prg
  * contrib/hbsqlit3/tests/authoriz.prg
  * contrib/hbsqlit3/tests/backup.prg
  * contrib/hbsqlit3/tests/blob.prg
  * contrib/hbsqlit3/tests/hooks.prg
  * contrib/hbsqlit3/tests/metadata.prg
  * contrib/hbsqlit3/tests/pack.prg
  * contrib/hbsqlit3/tests/sl3_test.prg
  * contrib/hbssl/tests/bio.prg
  * contrib/hbssl/tests/crypt.prg
  * contrib/hbssl/tests/digest.prg
  * contrib/hbssl/tests/encode.prg
  * contrib/hbssl/tests/pem.prg
  * contrib/hbssl/tests/test.prg
  * contrib/hbxdiff/tests/test.prg
  * contrib/hbxdiff/tests/test2.prg
  * contrib/hbxdiff/tests/test3.prg
  * contrib/hbzebra/tests/testcair.prg
  * contrib/hbzebra/tests/testhpdf.prg
  * contrib/hbzebra/tests/testwin.prg
  * contrib/sddmy/tests/test1.prg
  * contrib/sddoci/tests/test1.prg
  * contrib/sddodbc/tests/test1.prg
  * contrib/sddodbc/tests/test2.prg
  * contrib/sddsqlt3/tests/test1.prg
    % no longer use #include to include standard
      package headers. Rely on autoload triggered
      by .hbc file or #require directive.
2012-11-29 00:04:11 +00:00

108 lines
2.7 KiB
Plaintext

/*
* $Id$
*/
/*
* VERY IMPORTANT: Don't use this querys as sample, they are used for stress tests !!!
*/
#require "hbpgsql"
PROCEDURE Main( cServer, cDatabase, cUser, cPass )
LOCAL conn, res, i, x
LOCAL cQuery
CLS
? "Connecting...."
conn := PQconnectdb( "dbname = " + cDatabase + " host = " + cServer + " user = " + cUser + " password = " + cPass + " port = 5432" )
? PQstatus( conn ), PQerrorMessage( conn )
IF PQstatus( conn ) != CONNECTION_OK
QUIT
ENDIF
? "Dropping table..."
PQexec( conn, "DROP TABLE test" )
? "Creating test table..."
cQuery := "CREATE TABLE test("
cQuery += " Code integer not null primary key, "
cQuery += " dept Integer, "
cQuery += " Name Varchar(40), "
cQuery += " Sales boolean, "
cQuery += " Tax Float4, "
cQuery += " Salary Double Precision, "
cQuery += " Budget Numeric(12,2), "
cQuery += " Discount Numeric(5,2), "
cQuery += " Creation Date, "
cQuery += " Description text ) "
PQexec( conn, cQuery )
PQexec( conn, "SELECT code, dept, name, sales, salary, creation FROM test" )
PQexec( conn, "BEGIN" )
FOR i := 1 TO 10000
@ 15, 0 SAY "Inserting values...." + Str( i )
cQuery := "INSERT INTO test(code, dept, name, sales, salary, creation) " + ;
"VALUES( " + Str( i ) + "," + Str( i + 1 ) + ", 'DEPARTMENT NAME " + StrZero( i ) + "', 'y', " + Str( 300.49 + i ) + ", '2003-12-28' )"
PQexec( conn, cQuery )
IF Mod( i, 100 ) == 0
? PQexec( conn, "COMMIT" )
? PQexec( conn, "BEGIN" )
ENDIF
NEXT
FOR i := 5000 TO 7000
@ 16, 0 SAY "Deleting values...." + Str( i )
cQuery := "DELETE FROM test WHERE code = " + Str( i )
PQexec( conn, cQuery )
IF Mod( i, 100 ) == 0
PQexec( conn, "COMMIT" )
PQexec( conn, "BEGIN" )
ENDIF
NEXT
FOR i := 2000 TO 3000
@ 17, 0 SAY "Updating values...." + Str( i )
cQuery := "UPDATE FROM test SET salary = 400 WHERE code = " + Str( i )
PQexec( conn, cQuery )
IF Mod( i, 100 ) == 0
PQexec( conn, "COMMIT" )
PQexec( conn, "BEGIN" )
ENDIF
NEXT
res := PQexec( conn, "SELECT sum(salary) as sum_salary FROM test WHERE code between 1 and 4000" )
IF PQresultStatus( res ) == PGRES_TUPLES_OK
@ 18, 0 SAY "Sum values...." + PQgetvalue( res, 1, 1 )
ENDIF
x := 0
FOR i := 1 TO 4000
res := PQexec( conn, "SELECT salary FROM test WHERE code = " + Str( i ) )
IF PQresultStatus( res ) == PGRES_TUPLES_OK
x += Val( PQgetvalue( res, 1, 1 ) )
@ 19, 0 SAY "Sum values...." + Str( x )
ENDIF
NEXT
? "Closing..."
conn := NIL
RETURN