cube.diff

text/plain

Filename: cube.diff
Type: text/plain
Part: 0
Message: Re: semi-PoC: kNN-gist for cubes

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: context
File+
contrib/cube/cube.c 17 0
*** a/contrib/cube/cube.c
--- b/contrib/cube/cube.c
***************
*** 73,78 **** PG_FUNCTION_INFO_V1(g_cube_penalty);
--- 73,79 ----
  PG_FUNCTION_INFO_V1(g_cube_picksplit);
  PG_FUNCTION_INFO_V1(g_cube_union);
  PG_FUNCTION_INFO_V1(g_cube_same);
+ PG_FUNCTION_INFO_V1(g_cube_distance);
  
  Datum		g_cube_consistent(PG_FUNCTION_ARGS);
  Datum		g_cube_compress(PG_FUNCTION_ARGS);
***************
*** 81,86 **** Datum		g_cube_penalty(PG_FUNCTION_ARGS);
--- 82,88 ----
  Datum		g_cube_picksplit(PG_FUNCTION_ARGS);
  Datum		g_cube_union(PG_FUNCTION_ARGS);
  Datum		g_cube_same(PG_FUNCTION_ARGS);
+ Datum		g_cube_distance(PG_FUNCTION_ARGS);
  
  /*
  ** B-tree support functions
***************
*** 649,654 **** g_cube_same(PG_FUNCTION_ARGS)
--- 651,671 ----
  }
  
  /*
+ ** Distance method
+ */
+ Datum
+ g_cube_distance(PG_FUNCTION_ARGS)
+ {
+ 	GISTENTRY	*entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ 	NDBOX		*query = PG_GETARG_NDBOX(1);
+ 	double		distance;
+ 
+ 	distance = DatumGetFloat8(DirectFunctionCall2(cube_distance, entry->key, PointerGetDatum(query)));
+ 
+ 	PG_RETURN_FLOAT8(distance);
+ }
+ 
+ /*
  ** SUPPORT ROUTINES
  */
  bool