[odb-users] Segfault after adding relations
kontakt at msnoch.pl
kontakt at msnoch.pl
Thu Sep 29 15:49:00 EDT 2011
Hi
Well, i figured out that i had cycles in my relations - that caused
an error. Now eveyrthing works fine but i'm wondering how can I
speedup my app. Db which I use is having table whith ~500.000 records
of bus arrivals which are storing as boost::shared_ptr, relation
to Line and Stop; Stop - Arrival is bidirectional so, stop is
storing QVector of weak_ptr to arrivals. The problem is, when I
try to find stop via street name. If Stop doesn't have pointer
vector it works really fast, but when it is - it takes minutes.
Do you know what can be wrong?
Michał
PS. I'm using PostgreSQL
[code]
session s;
transaction t(db->begin());
result start(db->query<Stop>("name ilike 'Opera'"));
for(result::iterator i(start.begin()); i!= start.end(); ++i)
{
cout << "Found " << i->name().toStdString() <<
i->street().toStdString() << endl;
}
t.commit();
cout << "Route Done (" << start.size() << ")" << endl;
[/code]
On Thu, 29 Sep 2011 10:54:17 +0200, Boris Kolpackov wrote:
> Hi Michal,
>
> kontakt at msnoch.pl <kontakt at msnoch.pl> writes:
>
>> transaction t(db->begin());
>>
>> result start(db->query<Stop>(query::name == p_from ||
>> query::street == p_from));
>>
>> for(result::iterator i(start.begin()); i!= start.end(); ++i)
>> {
>>
>> cout << "Found " << i->test().toStdString() << endl;
>>
>> }
>>
>> t.commit();
>> cout << "Route Done (" << start.size() << ")" << endl;
>
> The only problem that I see is the use of the result object after
> the transaction has been committed (last line). Quoting the manual,
> Section 4.4, second paragraph:
>
> "The result instance is only usable within the transaction it was
> created in. Trying to manipulate the result after the transaction
> has terminated leads to undefined behavior."
>
> If after fixing this you still get the segfault, I will also need
> either the code fragment that persists the Stop/Line objects in the
> database or your database dump (if it is big, please send it off-
> list).
>
> Boris
More information about the odb-users
mailing list