2010-02-04 18:11 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)

* contrib/hbfbird/tests/test.prg
    ! Fixed to work at all. This code was complete nonsense.
    + Added more status display.
    ; Anyhow basic tests shows that recent FB changes are okay, 
      but class wrapper never worked and tests were either 
      dummies or wrong. Please test hbfbird with real life 
      code.

  * contrib/hbfbird/tests/stress.prg
    * Formatting.

  * contrib/hbfbird/tests/testapi.c
    ! Fixed to not refer to env specific IP. The table name is still
      wrong though.

  * contrib/hbfbird/tfirebrd.prg
    + Added TOFIX about very old and very basic problem in the
      FB class wrapper.
This commit is contained in:
Viktor Szakats
2010-02-04 17:12:21 +00:00
parent 1de283c14a
commit ff8abbf18b
5 changed files with 101 additions and 59 deletions

View File

@@ -17,6 +17,26 @@
past entries belonging to author(s): Viktor Szakats.
*/
2010-02-04 18:11 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbfbird/tests/test.prg
! Fixed to work at all. This code was complete nonsense.
+ Added more status display.
; Anyhow basic tests shows that recent FB changes are okay,
but class wrapper never worked and tests were either
dummies or wrong. Please test hbfbird with real life
code.
* contrib/hbfbird/tests/stress.prg
* Formatting.
* contrib/hbfbird/tests/testapi.c
! Fixed to not refer to env specific IP. The table name is still
wrong though.
* contrib/hbfbird/tfirebrd.prg
+ Added TOFIX about very old and very basic problem in the
FB class wrapper.
2010-02-04 12:56 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ Added hbmk2_PathMakeRelative(). The opposite of PathProc().

View File

@@ -29,9 +29,9 @@ FUNCTION Main()
QUIT
ENDIF
IF oServer:TableExists("test")
? oServer:Execute("DROP TABLE Test")
? oServer:Execute("DROP DOMAIN boolean_field")
IF oServer:TableExists( "test" )
? oServer:Execute( "DROP TABLE Test" )
? oServer:Execute( "DROP DOMAIN boolean_field" )
ENDIF
? "Creating domain for boolean fields..."
@@ -51,77 +51,77 @@ FUNCTION Main()
cQuery += " Creation Date, "
cQuery += " Description blob sub_type 1 segment size 40 ) "
? oServer:Execute(cQuery)
? "CREATE TABLE:", oServer:Execute( cQuery )
oQuery := oServer:Query("SELECT code, dept, name, sales, salary, creation FROM test")
oQuery := oServer:Query( "SELECT code, dept, name, sales, salary, creation FROM test" )
oServer:StartTransaction()
FOR i := 1 TO 10000
@ 15,0 say "Inserting values...." + str(i)
@ 15, 0 say "Inserting values...." + hb_ntos( i )
oRow := oQuery:Blank()
oRow:Fieldput(1, i)
oRow:Fieldput(2, i+1)
oRow:Fieldput(3, "DEPARTMENT NAME " + strzero(i) )
oRow:Fieldput(4, (mod(i,10) == 0) )
oRow:Fieldput(3, "DEPARTMENT NAME " + strzero( i ) )
oRow:Fieldput(4, (i % 10) == 0) )
oRow:Fieldput(5, 3000 + i )
oRow:fieldput(6, Date() )
oServer:Append(oRow)
oServer:Append( oRow )
IF mod(i,100) == 0
IF i % 100 == 0
oServer:Commit()
oServer:StartTransaction()
ENDIF
NEXT
FOR i := 5000 TO 7000
@ 16,0 say "Deleting values...." + str(i)
@ 16,0 say "Deleting values...." + str( i )
oRow := oQuery:Blank()
oServer:Delete(oRow, "code = " + str(i))
oServer:Delete( oRow, "code = " + str( i ) )
IF mod(i,100) == 0
IF i % 100 == 0
oServer:Commit()
oServer:StartTransaction()
ENDIF
NEXT
FOR i := 2000 TO 3000
@ 17,0 say "Updating values...." + str(i)
@ 17,0 say "Updating values...." + str( i )
oRow := oQuery:Blank()
oRow:Fieldput(5, 4000+i)
oServer:update(oRow, "code = " + str(i))
oRow:Fieldput( 5, 4000 + i )
oServer:update( oRow, "code = " + str( i ) )
IF mod(i,100) == 0
IF i % 100 == 0
oServer:Commit()
oServer:StartTransaction()
ENDIF
NEXT
oQuery := oServer:Query("SELECT sum(salary) sum_salary FROM test WHERE code between 1 and 4000")
oQuery := oServer:Query( "SELECT sum(salary) sum_salary FROM test WHERE code between 1 and 4000" )
IF ! oQuery:Neterr()
oQuery:Fetch()
@ 18,0 say "Sum values...." + Str(oQuery:Fieldget(1))
@ 18,0 say "Sum values...." + Str( oQuery:Fieldget( 1 ) )
oQuery:Destroy()
ENDIF
x := 0
FOR i := 1 TO 4000
oQuery := oServer:Query("SELECT * FROM test WHERE code = " + str(i))
oQuery := oServer:Query( "SELECT * FROM test WHERE code = " + str( i ) )
IF ! oQuery:Neterr()
oQuery:Fetch()
oRow := oQuery:getrow()
oQuery:destroy()
x += oRow:fieldget(oRow:fieldpos("salary"))
x += oRow:fieldget( oRow:fieldpos( "salary" ) )
@ 19,0 say "Sum values...." + str(x)
@ 19,0 say "Sum values...." + str( x )
ENDIF
NEXT

View File

@@ -16,6 +16,7 @@ FUNCTION Main()
LOCAL num_cols
LOCAL columns
LOCAL fetch_stat
LOCAL tmp
hb_FNameSplit( hb_argv( 0 ), @cDir, @cName, NIL )
cDBName := hb_FNameMerge( cDir, cName, ".gdb" )
@@ -24,65 +25,85 @@ FUNCTION Main()
FErase( cDBName )
ENDIF
? FBCreateDB( cDBName, "sysdba", "masterkey", 1024, "ASCII", nDialect )
? tmp := FBCreateDB( cDBName, "sysdba", "masterkey", 1024, "ASCII", nDialect ), FBError( tmp )
/* Connect rdbms */
db := FBConnect( "127.0.0.1:" + cDBName, "sysdba", "masterkey" )
IF ISNUMBER( db )
? "Error:", FBError( db )
? "Error:", db, FBError( db )
QUIT
ENDIF
? FBExecute( db, "sldjfs;ldjs;djf", nDialect )
? FBClose( db )
? "Testing invalid request"
? tmp := FBExecute( db, "sldjfs;ldjs;djf", nDialect ), FBError( tmp )
trans := FBStartTransaction( db )
FBQuery( db, "create table teste (code smallint)", nDialect, trans )
FBCommit( trans )
IF ISNUMBER( trans )
? "Error:", trans, FBError( trans )
ELSE
? tmp := FBQuery( db, "create table teste (code smallint)", nDialect, trans ), FBError( tmp )
? tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "Status Execute: ", FBExecute( db, 'insert into customer(customer) values ("test 1")', nDialect, trans )
? "Status no Rollback: ", FBRollback( trans )
? "==="
trans := FBStartTransaction( db )
IF ISNUMBER( trans )
? "Error:", trans, FBError( trans )
ELSE
? tmp := FBQuery( db, "CREATE TABLE customer( customer VARCHAR(20) )", nDialect, trans ), FBError( tmp )
? tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "==="
trans := FBStartTransaction( db )
? "Status Execute: ", FBExecute( db, 'insert into customer(customer) values ("test 2")', nDialect, trans )
? "Status commit: ", FBCommit( trans )
IF ISNUMBER( trans )
? "Error:", trans, FBError( trans )
ELSE
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 1")', nDialect, trans ), FBError( tmp )
? "Status Rollback: ", tmp := FBRollback( trans ), FBError( tmp )
ENDIF
trans := FBStartTransaction( db )
IF ISNUMBER( trans )
? "Error:", trans, FBError( trans )
ELSE
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 2")', nDialect, trans ), FBError( tmp )
? "Status Commit: ", tmp := FBCommit( trans ), FBError( tmp )
ENDIF
? "Status Execute: ", FBExecute( db, 'insert into customer(customer) values ("test 3")', nDialect )
? "Status Execute: ", tmp := FBExecute( db, 'insert into customer(customer) values ("test 3")', nDialect ), FBError( tmp )
// FIX WINDOWS GPF BELOW
qry := FBQuery( db, "SELECT * FROM sales", nDialect )
qry := FBQuery( db, "SELECT * FROM customer", nDialect )
IF ISNUMBER( qry )
? "Error:", qry, FBError( qry )
ELSE
num_cols := qry[ 4 ]
columns := qry[ 6 ]
num_cols := qry[ 4 ]
columns := qry[ 6 ]
FOR x := 1 TO num_cols
? x, "> "
FOR y := 1 TO Len( columns[ x ] )
?? columns[ x, y ], " "
NEXT
NEXT
? "---"
DO WHILE ( fetch_stat := FBFetch( qry ) ) == 0
? fetch_stat
FOR x := 1 TO num_cols
?? FBGetData( qry, x ), ", "
? x, "> "
FOR y := 1 TO Len( columns[ x ] )
?? columns[ x, y ], " "
NEXT
NEXT
ENDDO
? "Fetch code:", fetch_stat
? "---"
? "Status Free sql: ", FBFree( qry )
DO WHILE ( fetch_stat := FBFetch( qry ) ) == 0
? fetch_stat
FOR x := 1 TO num_cols
?? FBGetData( qry, x ), ", "
NEXT
ENDDO
? "Fetch code:", fetch_stat
? "Status Free Query: ", FBFree( qry )
ENDIF
/* Close connection with rdbms */
? "Status Fechar Database: ", FBClose( db )
? "Status Close Database: ", tmp := FBClose( db ), FBError( tmp )
RETURN NIL

View File

@@ -20,7 +20,7 @@
#define USER "sysdba"
#define PASSWORD "masterkey"
#define DATABASE "192.168.1.33:d:\\fontes\\lixo\\test.gdb"
#define DATABASE "127.0.0.1:d:\\fontes\\lixo\\test.gdb"
#define ERREXIT(status, rc) {isc_print_status(status); return rc;}
#define MAX_BUFFER 1024

View File

@@ -550,6 +550,7 @@ METHOD Refresh() CLASS TFbQuery
IF ISARRAY( qry )
::numcols := qry[ 4 ]
/* TOFIX: This is faulty code. ::aStruct will become zero length, out of sync with ::numcols. */
::aStruct := StructConvert( qry[ 6 ], ::db, ::dialect )
::lError := .F.
@@ -937,7 +938,7 @@ STATIC FUNCTION DataToSql( xField )
RETURN NIL
STATIC FUNCTION StructConvert( aStru, db, dialect)
STATIC FUNCTION StructConvert( aStru, db, dialect )
LOCAL aNew := {}
LOCAL cField