ah yes. probably a missing rename during the migration to the new ffi. Stef
On Sun, Aug 13, 2017 at 9:04 PM, Herby Vojčík <he...@mailbox.sk> wrote: > Stephane Ducasse wrote: >> >> Do you have the same bug in 5.0? >> Because I do not know if garage was really tested on 60. > > > Don't know (don't have it), but last commit in Garage-SQLite > GuillermoPolito.26 from 2016. The mentioned #nbBindingOf: is sent at no > place at all in the image (except supersend in the lone method itself), so > it definitely looks like it need to rename to ffiBindingOf: for 60. > > Herby > > >> >> 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 >>> >>> >> > >