DBInterface or MySQL.jl problem?


When I execute two queries, the first result becomes random.

Given the database:

create database test;

use test;

create table person (
	id int auto_increment,
	name varchar(100),
	primary key (id)

create table address (
    id int auto_increment primary key,
    person int,
    description varchar(200),
    foreign key (person) references person(id)

insert into person(name) values('Roni');
insert into address(person, description) values(1, 'Street 1');

Given the code:

julia> using DBInterface, MySQL

julia> con = DBInterface.connect(MySQL.Connection, "", "root", 
                            "PASSWORD", db="test", port=3306);

julia> r1 = first(DBInterface.execute(con, 
                            "select * from address where id = 1"))
MySQL.TextRow{true}: (id = 1, person = 1, description = "Street 1")

julia> r1.id

julia> r1.person

julia> r2 = first(DBInterface.execute(con, 
                            "select * from person where id = 1"))
MySQL.TextRow{true}: (id = 1, name = "Roni")

julia> r2.id

julia> r2.name

julia> r1.description

Note that result r1.description is incorrect! The correct answer is: "Street 1", but
when I do the second query and store the result at r2, the first result r1 turns incorrect.


PS: I know I can make a join to get the both result with only one query.

It looks like the data for the 1st query is no longer valid once you’ve executed the 2nd query; this looks like a bug to me. If you file an issue at the MySQL.jl repo, I can take a look at it. Thanks.


Thanks @quinnj! I opened the issue at: