Обсуждение: NEED HELP !
Hello all,
I am a student-magister and I'm writting my magister work. I realized gist index TPR tree - it is like a simple R tree but moving :)
Everything is compiling ok, I creating table and index, but after whese code - DB is restarting :(((
I can not understand why DB is restarting ? It is restarting when SQL begins use index :(((
Can anybody help me , I would by appretiate every people who downloads my sources, try to deploy index and maybe solve where is the problem.
Best regards,
Sergej Galkin
I am a student-magister and I'm writting my magister work. I realized gist index TPR tree - it is like a simple R tree but moving :)
Everything is compiling ok, I creating table and index, but after whese code - DB is restarting :(((
set enable_seqscan = false
select * from table_of_moving_objects where mov_obj ~ box '(0,0) (1,1)'
select * from table_of_moving_objects where mov_obj ~ box '(0,0) (1,1)'
I can not understand why DB is restarting ? It is restarting when SQL begins use index :(((
Can anybody help me , I would by appretiate every people who downloads my sources, try to deploy index and maybe solve where is the problem.
Best regards,
Sergej Galkin
Вложения
I want to add than I have a piece of my code that looks very strange
Datum gist_mov_penalty(PG_FUNCTION_ARGS)
{
GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0);
GISTENTRY *newentry = (GISTENTRY *) PG_GETARG_POINTER(1);
float * result = (float *) PG_GETARG_POINTER(2);
moving_object *orig = &(*origentry).key;
make_now(orig);
moving_object *new = &(*origentry).key;
make_now(new);
{
GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0);
GISTENTRY *newentry = (GISTENTRY *) PG_GETARG_POINTER(1);
float * result = (float *) PG_GETARG_POINTER(2);
moving_object *orig = &(*origentry).key;
make_now(orig);
moving_object *new = &(*origentry).key;
make_now(new);
Is everything ok in this code ??
On Wed, Jan 13, 2010 at 8:42 PM, Sergej Galkin <sergej.galkin@gmail.com> wrote:
Hello all,
I am a student-magister and I'm writting my magister work. I realized gist index TPR tree - it is like a simple R tree but moving :)
Everything is compiling ok, I creating table and index, but after whese code - DB is restarting :(((set enable_seqscan = false
select * from table_of_moving_objects where mov_obj ~ box '(0,0) (1,1)'
I can not understand why DB is restarting ? It is restarting when SQL begins use index :(((
Can anybody help me , I would by appretiate every people who downloads my sources, try to deploy index and maybe solve where is the problem.
Best regards,
Sergej Galkin
Sergej, > I can not understand why DB is restarting ? It is restarting when SQL > begins use index :((( > Can anybody help me , I would by appretiate every people who downloads > my sources, try to deploy index and maybe solve where is the problem. It would help if you gave people a link. Also, if you are Russian, there is a siginficant community of PostgreSQL russian-speakers who might be able to help you. --Josh Berkus
On Wed, Jan 13, 2010 at 1:42 PM, Sergej Galkin <sergej.galkin@gmail.com> wrote: > I can not understand why DB is restarting ? It is restarting when SQL begins > use index :((( > Can anybody help me , I would by appretiate every people who downloads my > sources, try to deploy index and maybe solve where is the problem. Your code is probably crashing. Before trying to use the index, run "select pg_backend_pid()" in the backend that you're going to try to use it from. Then use "gdb -p <pid>" to attach gdb to the backend. Type "c" for continue. Now run the query that crashes it. gdb will trap the signal and you can use "bt" to get a backtrace. I don't think it would be appropriate for us to help you debug your class project, but learning to use gdb should help you a lot. Also see: http://wiki.postgresql.org/wiki/Guide_to_reporting_problems ...Robert
I debugged index with gdb and found that it is segmentation fault in my procedure named gist_mov_consistent it is only 7 lines. So I think it is worth to publish it to public,
Datum gist_mov_consistent(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *)PG_GETARG_POINTER(0);
BOX *query = PG_GETARG_BOX_P(1);
StrategyNumber strategy = (StrategyNumber)PG_GETARG_UINT16(2);
if (DatumGetMovP(entry->key) == NULL || query == NULL)
PG_RETURN_BOOL(FALSE);
PG_RETURN_BOOL(obj_contains(DatumGetMovP(entry->key), query));
}
Do you have any ideas where is the problem ? :)
Best regards,
Sergej Galkin
Datum gist_mov_consistent(PG_FUNCTION_ARGS)
{
GISTENTRY *entry = (GISTENTRY *)PG_GETARG_POINTER(0);
BOX *query = PG_GETARG_BOX_P(1);
StrategyNumber strategy = (StrategyNumber)PG_GETARG_UINT16(2);
if (DatumGetMovP(entry->key) == NULL || query == NULL)
PG_RETURN_BOOL(FALSE);
PG_RETURN_BOOL(obj_contains(DatumGetMovP(entry->key), query));
}
Do you have any ideas where is the problem ? :)
Best regards,
Sergej Galkin
On Wed, Jan 13, 2010 at 8:42 PM, Sergej Galkin <sergej.galkin@gmail.com> wrote:
Hello all,
I am a student-magister and I'm writting my magister work. I realized gist index TPR tree - it is like a simple R tree but moving :)
Everything is compiling ok, I creating table and index, but after whese code - DB is restarting :(((set enable_seqscan = false
select * from table_of_moving_objects where mov_obj ~ box '(0,0) (1,1)'Best regards,
I can not understand why DB is restarting ? It is restarting when SQL begins use index :(((
Can anybody help me , I would by appretiate every people who downloads my sources, try to deploy index and maybe solve where is the problem.
Sergej Galkin
And
int obj_contains(moving_object *a, BOX *b)
{
if (b->low.x > a->x_low)
return 0;
if (b->low.y > a->y_low)
return 0;
if (b->high.x < a->x_high)
return 0;
if (b->high.y < a->y_high)
return 0;
return 1;
}
this is the procedure obj contains{
if (b->low.x > a->x_low)
return 0;
if (b->low.y > a->y_low)
return 0;
if (b->high.x < a->x_high)
return 0;
if (b->high.y < a->y_high)
return 0;
return 1;
}
On Wed, Jan 13, 2010 at 8:56 PM, Sergej Galkin <sergej.galkin@gmail.com> wrote:
I want to add than I have a piece of my code that looks very strangeDatum gist_mov_penalty(PG_FUNCTION_ARGS)
{
GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0);
GISTENTRY *newentry = (GISTENTRY *) PG_GETARG_POINTER(1);
float * result = (float *) PG_GETARG_POINTER(2);
moving_object *orig = &(*origentry).key;
make_now(orig);
moving_object *new = &(*origentry).key;
make_now(new);Is everything ok in this code ??On Wed, Jan 13, 2010 at 8:42 PM, Sergej Galkin <sergej.galkin@gmail.com> wrote:Hello all,
I am a student-magister and I'm writting my magister work. I realized gist index TPR tree - it is like a simple R tree but moving :)
Everything is compiling ok, I creating table and index, but after whese code - DB is restarting :(((set enable_seqscan = false
select * from table_of_moving_objects where mov_obj ~ box '(0,0) (1,1)'
I can not understand why DB is restarting ? It is restarting when SQL begins use index :(((
Can anybody help me , I would by appretiate every people who downloads my sources, try to deploy index and maybe solve where is the problem.
Best regards,
Sergej Galkin