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  (Nicolas Barbier <nicolas.barbier@gmail.com>)
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:

Previous
From: fangfang liu
Date:
Subject: Re: add xml support function
Next
From: Andres Freund
Date:
Subject: Re: Hot Standy introduced problem with query cancel behavior