array-ts-analyze-mem-v1.patch

text/plain

Filename: array-ts-analyze-mem-v1.patch
Type: text/plain
Part: 0
Message: Aggressive memory consumption in {ts,array}_typanalyze

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
Series: patch v1
File+
src/backend/tsearch/ts_typanalyze.c 1 0
src/backend/utils/adt/array_typanalyze.c 1 0
*** a/src/backend/tsearch/ts_typanalyze.c
--- b/src/backend/tsearch/ts_typanalyze.c
***************
*** 186,192 **** compute_tsvector_stats(VacAttrStats *stats,
  	hash_ctl.match = lexeme_match;
  	hash_ctl.hcxt = CurrentMemoryContext;
  	lexemes_tab = hash_create("Analyzed lexemes table",
! 							  bucket_width * 7,
  							  &hash_ctl,
  					HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_CONTEXT);
  
--- 186,192 ----
  	hash_ctl.match = lexeme_match;
  	hash_ctl.hcxt = CurrentMemoryContext;
  	lexemes_tab = hash_create("Analyzed lexemes table",
! 							  num_mcelem,
  							  &hash_ctl,
  					HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_CONTEXT);
  
*** a/src/backend/utils/adt/array_typanalyze.c
--- b/src/backend/utils/adt/array_typanalyze.c
***************
*** 282,288 **** compute_array_stats(VacAttrStats *stats, AnalyzeAttrFetchFunc fetchfunc,
  	elem_hash_ctl.match = element_match;
  	elem_hash_ctl.hcxt = CurrentMemoryContext;
  	elements_tab = hash_create("Analyzed elements table",
! 							   bucket_width * 7,
  							   &elem_hash_ctl,
  					HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_CONTEXT);
  
--- 282,288 ----
  	elem_hash_ctl.match = element_match;
  	elem_hash_ctl.hcxt = CurrentMemoryContext;
  	elements_tab = hash_create("Analyzed elements table",
! 							   num_mcelem,
  							   &elem_hash_ctl,
  					HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_CONTEXT);