* 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.
108 lines
2.7 KiB
Plaintext
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
|