Files
harbour-core/harbour/contrib/hbpgsql/tests/stress.prg
Viktor Szakats f2480e5443 2007-12-01 02:34 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/make_b32_all.bat
   * contrib/make_vc_all.bat
   * contrib/Makefile
   - contrib/msql
   + contrib/hbmsql
   * contrib/hbmsql/common.mak
   * contrib/hbmsql/Makefile
   - contrib/libmisc
   + contrib/hbmisc
   - contrib/mysql
   + contrib/hbmysql
   - contrib/odbc
   + contrib/hbodbc
   - contrib/ole
   + contrib/hbole
   - contrib/pgsql
   + contrib/hbpgsql
   * contrib/hbpgsql/common.mak
   * contrib/hbpgsql/Makefile
   - contrib/samples
   + contrib/hbclipsm
   * contrib/hbclipsm/common.mak
   * contrib/hbclipsm/Makefile
2007-12-01 01:34:59 +00:00

132 lines
3.3 KiB
Plaintext

/*
*
* $Id$
*
* VERY IMPORTANT: Don't use this querys as sample, they are used for stress tests !!!
*
*/
#include "common.ch"
#include "../postgres.ch"
Function Main()
Local conn, res, oRow, i, x
Local cServer := '192.168.1.20'
Local cDatabase := 'test'
Local cUser := 'rodrigo'
Local cPass := 'moreno'
Local cQuery
CLEAR SCREEN
? 'Connecting....'
conn := PQconnect(cDatabase, cServer, cUser, cPass, 5432)
? PQstatus(conn), PQerrormessage(conn)
if PQstatus(conn) != CONNECTION_OK
quit
endif
? 'Dropping table...'
res := PQexec(conn, 'DROP TABLE test')
PQclear(res)
? '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 ) '
res := PQexec(conn, cQuery)
PQclear(res)
res := PQexec(conn, 'SELECT code, dept, name, sales, salary, creation FROM test')
PQclear(res)
res := PQexec(conn, 'BEGIN')
PQclear(res)
For i := 1 to 10000
@ 15,0 say 'Inserting values....' + str(i)
cQuery := 'INSERT INTO test(code, dept, name, sales, salary, creation) '
cQuery += 'VALUES( ' + str(i) + ',' + str(i+1) + ", 'DEPARTMENT NAME " + strzero(i) + "', 'y', " + str(300.49+i) + ", '2003-12-28' )"
res := PQexec(conn, cQuery)
PQclear(res)
if mod(i,100) == 0
? res := PQexec(conn, 'COMMIT')
? PQclear(res)
? res := PQexec(conn, 'BEGIN')
? PQclear(res)
end
Next
For i := 5000 to 7000
@ 16,0 say 'Deleting values....' + str(i)
cQuery := 'DELETE FROM test WHERE code = ' + str(i)
res := PQexec(conn, cQuery)
PQclear(res)
if mod(i,100) == 0
res := PQexec(conn, 'COMMIT')
PQclear(res)
res := PQexec(conn, 'BEGIN')
PQclear(res)
end
Next
For i := 2000 to 3000
@ 17,0 say 'Updating values....' + str(i)
cQuery := 'UPDATE FROM test SET salary = 400 WHERE code = ' + str(i)
res := PQexec(conn, cQuery)
PQclear(res)
if mod(i,100) == 0
res := PQexec(conn, 'COMMIT')
PQclear(res)
res := PQexec(conn, 'BEGIN')
PQclear(res)
end
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)
end
PQclear(res)
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)
end
Next
? "Closing..."
PQclose(conn)
return nil