Do you have the same bug in 5.0? Because I do not know if garage was really tested on 60.
Stef On Sun, Aug 13, 2017 at 8:41 PM, Herby Vojčík <he...@mailbox.sk> wrote: > Stephane Ducasse wrote: >> >> Hi Herby >> >> On which version of Pharo are you trying? Because lot of changes >> happened on Pharo 60 FFI. >> >> Stef >> >> On Sun, Aug 13, 2017 at 6:11 PM, Herby Vojčík<he...@mailbox.sk> wrote: >>> >>> Hello! >>> >>> This testing code: >>> >>> | databaseFile login accessor sqlString | >>> databaseFile := Smalltalk imageDirectory asFileReference / >>> 'play.sqlite'. >>> login := Login new >>> database: SQLite3Platform new; >>> host: ''; >>> port: ''; >>> username: ''; >>> password: ''; >>> databaseName: databaseFile fullPath asZnUrl >>> asString; >>> yourself. >>> accessor := DatabaseAccessor forLogin: login. >>> accessor login. >>> sqlString := 'SELECT * FROM AGENT'. >>> (accessor basicExecuteSQLString: sqlString) contents inspect. >>> >>> fails (Pharo 6.1, GarageGlorp #stable loaded a week ago as a project > > > As I wrote here, Pharo 6.1. > > >>> dependency) with: >>> >>> Error: Unable to resolve external type: sqlite3 >>> >>> FFICallout(Object)>>error: >>> FFICallout>>resolveType: >>> FFICallout>>typeName:pointerArity: >>> FFICallout>>argName:indirectIndex:type:ptrArity: >>> FFIFunctionParser>>parseArgument >>> FFIFunctionParser>>parseArguments >>> FFIFunctionParser>>parseNamedFunction: >>> FFICalloutMethodBuilder>>parseSignature: >>> FFICalloutMethodBuilder>>generate >>> FFICalloutMethodBuilder>>build: >>> FFICalloutAPI>>function:module: >>> GASqlite3FFI(Object)>>ffiCall:module: >>> GASqlite3FFI>>apiErrorMessage: >>> GASqlite3FFI>>signal:with:on: >>> GASqlite3FFI>>checkForOk:on: >>> GASqlite3FFI>>prepare:on:with: >>> GASqlite3Statement>>prepare >>> GASqlite3Driver>>prepare: >>> GASqlite3ResultSet>>prepareStatement: >>> GASqlite3ResultSet>>execute:withCollection: >>> GASqlite3ResultSet>>execute:with:on: >>> GASqlite3Driver>>execute:with: >>> GASqlite3Driver>>execute: >>> GAGlorpDriver>>basicExecuteSQLString: >>> PharoDatabaseAccessor>>basicExecuteSQLString: >>> UndefinedObject>>DoIt >>> OpalCompiler>>evaluate >>> [..snip..] >>> >>> Problem seems to be that in FFICallout>> resolveType:, the line >>> >>> binding := resolver ffiBindingOf: name asSymbol. >>> >>> actually produces nil, resolver being GASqlite3FFI class. If looking at >>> the >>> class side of GaSqlite3FFI, there is no ffiBindingOf: at all; there is >>> >>> nbBindingOf: aTypeName >>> ^ TypeMap at: aTypeName ifAbsent: [ super nbBindingOf: aTypeName >>> ] >>> >>> though. If I copy near-mindlessly and add: >>> >>> ffiBindingOf: aTypeName >>> ^ TypeMap at: aTypeName ifAbsent: [ super ffiBindingOf: >>> aTypeName ] >>> >>> then the code above fails correctly with: 'no such table: AGENT'. >>> >>> Am I missing some nb<->ffi bridge? Or is there a bug in Garage SQLite >>> driver? >>> >>> Herby > >