DBInterface or MySQL.jl problem?

Hello,

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, "127.0.0.1", "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
1

julia> r1.person
1

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

julia> r2.id
1

julia> r2.name
"Roni"

julia> r1.description
"\0_9\n\x02\0\0\0\0b9\n\x02\0\0\0\0e9..."

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.

Why?

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.

2 Likes

Thanks @quinnj! I opened the issue at: