problem with realizing gist index - Mailing list pgsql-hackers
From | Sergej Galkin |
---|---|
Subject | problem with realizing gist index |
Date | |
Msg-id | dfebc1f10912310358n196112adpf90613a092cddbf4@mail.gmail.com Whole thread Raw |
Responses |
Re: problem with realizing gist index
|
List | pgsql-hackers |
Hello all, <br />I'm creating gist index for testing purpuses :)<br /><br />I created index element structure:<br /><br style="font-family:courier new,monospace;" /><div style="margin-left: 40px;"><span style="font-family: courier new,monospace;">typedefstruct moving_object </span><br style="font-family: courier new,monospace;" /><span style="font-family:courier new,monospace;">{</span><br style="font-family: courier new,monospace;" /><span style="font-family:courier new,monospace;"> double x_high;</span><br style="font-family: courier new,monospace;" /><spanstyle="font-family: courier new,monospace;"> double y_high;</span><br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;"> double x_low;</span><br style="font-family: couriernew,monospace;" /><span style="font-family: courier new,monospace;"> double y_low;</span><br style="font-family:courier new,monospace;" /><span style="font-family: courier new,monospace;"> time_t mov_time;</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> doublex_plus;</span><br style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> double y_plus;</span><br style="font-family: courier new,monospace;" /><span style="font-family: couriernew,monospace;"> double x_minus;</span><br style="font-family: courier new,monospace;" /><span style="font-family:courier new,monospace;"> double y_minus;</span><br style="font-family: courier new,monospace;" /><spanstyle="font-family: courier new,monospace;">} moving_object;</span><br /></div><br />And defined macros that returnpointer to this structure:<br /><br /><span style="font-family: courier new,monospace;">#define DatumGetMovP(x) ((moving_object*)DatumGetPointer(x))</span><br /><br /><br />but index interface function gives me error: Incompatible typein assignment<br />Error line I style - bold<br /><br style="font-family: courier new,monospace;" /><div style="margin-left:40px;"><span style="font-family: courier new,monospace;">Datum gist_mov_union(PG_FUNCTION_ARGS)</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: couriernew,monospace;">{</span><br style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0); int *sizep = (int *) PG_GETARG_POINTER(1);</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> int num_obj;</span><br style="font-family: courier new,monospace;" /><span style="font-family: couriernew,monospace;"> moving_object *pageunion, curr;</span><br style="font-family: courier new,monospace;" /><spanstyle="font-family: courier new,monospace;"> </span><br style="font-family: courier new,monospace;" /><span style="font-family:courier new,monospace;"> num_obj = entryvec->n;</span><br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;"> </span><br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;"> pageunion = (moving_object*) palloc(sizeof(moving_object));</span><br/> // THIS IS THE ERROR LINE<br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;"> <font size="2"><b> curr = DatumGetMovP(entryvec->vector[0].key);</b></font></span><brstyle="font-family: courier new,monospace;" /><span style="font-family:courier new,monospace;"> make_now(curr);</span><br style="font-family: courier new,monospace;" /><spanstyle="font-family: courier new,monospace;"> memcpy((void *) pageunion, (void *) curr, sizeof(moving_object));</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> </span><br style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> for(int i = 1; i < num_obj; i++)</span><br style="font-family: courier new,monospace;" /><span style="font-family:courier new,monospace;"> {</span><br style="font-family: courier new,monospace;" /><span style="font-family:courier new,monospace;"> curr = DatumGetMovP(entryvec->vector[i].key);</span><br style="font-family:courier new,monospace;" /><span style="font-family: courier new,monospace;"> make_now(curr);</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> if (pageunion->x_high > curr->x_high)</span><br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;"> pageunion->x_high = curr->x_high;</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> if (pageunion->y_high < curr->y_high)</span><br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;"> pageunion->y_high = curr->y_high;</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> if (pageunion->x_low < curr->x_low)</span><br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;"> pageunion->x_low = curr->x_low;</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> if (pageunion->y_low > curr->y_low)</span><br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;"> pageunion->y_low = curr->y_low;</span><brstyle="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> }</span><br style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> </span><br style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> *sizep = sizeof(moving_object);</span><br style="font-family: courier new,monospace;" /><span style="font-family:courier new,monospace;"> PG_RETURN_POINTER(pageunion);</span><br style="font-family: courier new,monospace;"/><span style="font-family: courier new,monospace;">}</span><b><br /></b></div><br />Can anybody know whatthe problem ? I imagine that my defined function returns not pointer, but stucture (??) ?<br /><br />Best regards,<br/>Sergej Galkin<br />
pgsql-hackers by date: