RFC: mysql-native - Supporting both Vibe.d and Phobos sockets
Gary Willoughby
dev at kalekold.net
Sat May 18 08:42:24 PDT 2013
Hi, i've tried using this library for a simple query and i run
into an error. I wondered if this is a bug in the connection code.
MySql schema:
CREATE TABLE tblUser (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
age varchar(45) NOT NULL,
date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
D code:
import mysql.connection;
import std.stdio;
void main(string[] arguments)
{
auto connection = new Connection(MySQLSocketType.phobos,
"127.0.0.1", "root", "r00t", "Project");
auto command = new Command(connection, "SELECT * FROM
tblUser");
auto results = command.execSQLResult();
foreach (row; results)
{
writeln(row);
}
connection.close();
}
Error:
core.exception.AssertError at mysql.connection(1046): Assertion
failure
----------------
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(_d_assertm+0x26)
[0x4a6a06]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main()
[0x4a38ce]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(mysql.connection.SQLValue
mysql.connection.consumeNonBinaryValueIfComplete!(std.datetime.DateTime).consumeNo
nBinaryValueIfComplete(ref ubyte[], bool)+0x126) [0x49e8ee]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(mysql.connection.SQLValue
mysql.connection.consumeIfComplete!(std.datetime.DateTime,
8).consumeIfComplete(re
f ubyte[], bool, bool)+0x36) [0x49ded2]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(mysql.connection.SQLValue
mysql.connection.consumeIfComplete!().consumeIfComplete(ref
ubyte[], mysql.connect
ion.SQLType, bool, bool)+0x308) [0x494efc]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(mysql.connection.Row
mysql.connection.Row.__ctor(mysql.connection.Connection, ref
ubyte[], mysql.connection.
ResultSetHeaders, bool)+0x221) [0x48be95]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(mysql.connection.ResultSet
mysql.connection.Command.execSQLResult(mysql.connection.ColumnSpecialization[])+0
x1a3) [0x490f13]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(_Dmain+0xc9)
[0x469a19]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(extern
(C) int rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).void runMain()+0x18) [
0x4a71c8]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(extern
(C) int rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).void tryExec(scope voi
d delegate())+0x2a) [0x4a6d06]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(extern
(C) int rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).void runAll()+0x3b) [0
x4a720f]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(extern
(C) int rt.dmain2._d_run_main(int, char**, extern (C) int
function(char[][])*).void tryExec(scope voi
d delegate())+0x2a) [0x4a6d06]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(_d_run_main+0x1a8)
[0x4a6cc0]
/tmp/.rdmd-1000/rdmd-main.d-EFA691A0BC2EFA572D0F077AB8E17D5C/main(main+0x17)
[0x4a6b13]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)
[0x7f391473476d]
----------------
core.exception.InvalidMemoryOperationError
If i comment out the assert on line 1046 in connection.d
everything seems to work fine. Any thoughts?
More information about the Digitalmars-d
mailing list