[Newbies] FFI+ODBC Troubles

Victor Metelitsa vvm13ru at gmail.com
Mon Jun 1 04:53:33 UTC 2009


Please help me.
I am trying to switch from VisualWorks to Squeak but I can't connect to any
my DB2 and Oracle databases.

I am using this files:
ftp://ftp.squeak.org/3.10/win/SqueakVM-Win32-3.10.6-bin.zip
ftp://ftp.squeak.org/3.10/Squeak3.10.2-7179-basic.zip
http://ftp.squeak.org/3.0/platform-independent/SqueakV3.sources.gz
http://map.squeak.org/accountbyid/cf58c358-46ee-465e-b6db-2740e9b32a53/files/InstallFFI4.st

At first I tried old ODBC code from
http://wiki.squeak.org/squeak/uploads/2480/ODBC-dgd.10.cs.gz
and got "Could not coerce arguments" at my win32 (XP and Windows 2003
Server) computers. I can't understand this because all seems right.
At SqueakDebug.log we can see

------------------------------------
Error: Could not coerce arguments
28 May 2009 4:18:23 pm

VM: Win32 - a SmalltalkImage
Image: Squeak3.10.2 [latest update: #7179]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\squeak\1
Trusted Dir C:\squeak\1\vvm
Untrusted Dir C:\My Squeak\vvm

ODBCLibrary(Object)>>error:
    Receiver: an ODBCLibrary
    Arguments and temporary variables:
        aString:     'Could not coerce arguments'
    Receiver's instance variables:
        handle:     @ 16r4BF70000
        name:     'odbc32'

ODBCLibrary(Object)>>externalCallFailed
    Receiver: an ODBCLibrary
    Arguments and temporary variables:
        errCode:     6
    Receiver's instance variables:
        handle:     @ 16r4BF70000
        name:     'odbc32'

ODBCLibrary>>sqlBindCol:columnNumber:targetType:targetValue:bufferLength:strLength:
    Receiver: an ODBCLibrary
    Arguments and temporary variables:
        statementHandle:     a SQLHSTMT
        columnNumber:     1
        targetType:     1
        targetValue:     an ExternalData
        bufferLength:     8192
        strLenght:     a SQLInteger
    Receiver's instance variables:
        handle:     @ 16r4BF70000
        name:     'odbc32'

ODBCColumn>>bindBuffer
    Receiver: an ODBCColumn DUMMY (VarChar 1 nullable)
    Arguments and temporary variables:
------------------------------------
where

sqlBindCol: statementHandle columnNumber: columnNumber targetType:
targetType targetValue: targetValue bufferLength: bufferLength strLength:
strLenght
 "SQLRETURN
 SQLGetData(
 SQLHSTMT StatementHandle,
 SQLUSMALLINT ColumnNumber,
 SQLSMALLINT TargetType,
 SQLPOINTER TargetValue,
 SQLINTEGER BufferLength,
 SQLINTEGER *StrLen_or_Ind);"
 <cdecl: short 'SQLBindCol' (SQLHSTMT ulong short void* long SQLInteger*)>
 ^ self externalCallFailed

I think all types are correct.

Also at Windows 2003 x64 I receive "Error:[Microsoft][ODBC Driver Manager]
Data source name not found and no default driver specified [State:IM002]"
for any datasource.

After that I am trying ODBC code from
http://www.squeaksource.com/ODBC/ODBC-rjl.10.mcz

| con rs |
con _ ODBCConnection dsn:'somedsn' user:'somename' password:'somepwd'.
rs := con resultSetFor: 'SELECT ''xxx'' manana FROM dual'.
(con query: 'SELECT ''xxx'' manana FROM dual') results do:[:row | Transcript
show: row; cr].
con close.

squeak image crashes somewhere near calling of "con resultSetFor:". No
SqueakDebug.log generated in this case.  Crash.dmp contains:
------------------------------------
---------------------------------------------------------------------
Mon Jun 01 10:37:54 2009

Exception code: C0000005
Exception addr: 0040BD85
Access violation (read access) at 91233BDA
EAX:91233BDA    EBX:96A4E35C    ECX:00000003    EDX:96A4E35F
ESI:11233B78    EDI:91233BDB    EBP:0000138C    ESP:0006F998
EIP:0040BD85    EFL:00010286
FP Control: FFFF027F
FP Status:  FFFF5061
FP Tag:     FFFFFFFF

Hardware information:
    Manufacturer: Unknown
    Model: Unknown
    Number of processors: 1
    Page size: 4096

Memory Information (upon launch):
    Physical Memory Size: 2097151 kbytes
    Physical Memory Free: 1681472 kbytes
    Page File Size: 4194303 kbytes
    Page File Free: 4194303 kbytes
    Virtual Memory Size: 2097151 kbytes
    Virtual Memory Free: 2064020 kbytes
    Memory Load: 40 percent

Processor 0: AMD Athlon(tm) 64 Processor 3400+
    Identifier: x86 Family 15 Model 12 Stepping 0
    ~MHZ: 2411

Operating System: Microsoft Windows Server 2003 (Build 3790 Service Pack 1)
    Registered Owner: unnamed user
    Registered Company: unknown organization
    SP major version: 1
    SP minor version: 0
    Suite mask: 110
    Product type: 3

Display Information:
    Graphics adapter name: NVIDIA GeForce4 Ti 4200
    Primary monitor resolution: 1024 x 768

Device: NVIDIA GeForce4 Ti 4200
    Adapter String: GeForce4 Ti 4200
    Bios String: Version 4.25.00.29.00
    Chip Type: GeForce4 Ti 4200
    DAC Type: Integrated RAMDAC
    Memory Size: 0x04000000

Driver Versions:
    nv4_disp: 6.14.10.9371

VM Version: Squeak 3.10.6 (release) from Aug 30 2007
Compiler: gcc 2.95.2 19991024 (release)

Current byte code: 200
Primitive index: 264

Loaded plugins:
    odbc32
    SqueakFFIPrims 1 February 2007 (e)
    LargeIntegers v1.5 1 February 2007 (i)
    Matrix2x3Plugin 1 February 2007 (i)
    FloatArrayPlugin 1 February 2007 (i)
    BitBltPlugin 1 February 2007 (i)
    B2DPlugin 1 February 2007 (i)
    SecurityPlugin 1 February 2007 (i)
    FilePlugin 1 February 2007 (i)
    MiscPrimitivePlugin 1 February 2007 (i)


Stack dump:
------------------------------------

(Sorry for my English)
Victor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/beginners/attachments/20090601/9b5e71bc/attachment.htm


More information about the Beginners mailing list