From 25242d6b54da9530efc9830d4b700989cc166f49 Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Wed, 13 Nov 2024 23:09:03 -0500 Subject: [PATCH 01/10] [#5847] ckan.datastore.default_fts_index_field_types config option --- .test_durations.gz | Bin 70345 -> 0 bytes ckanext/datastore/config_declaration.yaml | 11 +++++++++++ ckanext/datastore/helpers.py | 3 ++- ckanext/datastore/tests/test_db.py | 4 ++-- ckanext/datastore/tests/test_helpers.py | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) delete mode 100644 .test_durations.gz diff --git a/.test_durations.gz b/.test_durations.gz deleted file mode 100644 index a2b0b744f4dccd7c3108ac4a54b60beda8a3b90a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70345 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 + A separate full-text search index will be created by default for fields + with these types, and used when searching on fields by passing a + dictionary to the datastore_search q parameter. + + Indexes increase the time and disk space required to load data + into the DataStore. diff --git a/ckanext/datastore/helpers.py b/ckanext/datastore/helpers.py index 343d29859a4..046362cc13a 100644 --- a/ckanext/datastore/helpers.py +++ b/ckanext/datastore/helpers.py @@ -82,7 +82,8 @@ def _strip(s: Any): def should_fts_index_field_type(field_type: str): - return field_type.lower() in ['tsvector', 'text', 'number'] + return field_type in tk.config.get( + 'ckan.datastore.default_fts_index_field_types', ['text', 'tsvector']) def get_table_and_function_names_from_sql(context: Context, sql: str): diff --git a/ckanext/datastore/tests/test_db.py b/ckanext/datastore/tests/test_db.py index a646ed8a32e..987028b87ee 100644 --- a/ckanext/datastore/tests/test_db.py +++ b/ckanext/datastore/tests/test_db.py @@ -45,7 +45,7 @@ def test_creates_fts_index_on_all_fields_except_dates_nested_and_arrays_with_eng ): _get_fields.return_value = [ {"id": "text", "type": "text"}, - {"id": "number", "type": "number"}, + {"id": "tsvector", "type": "tsvector"}, {"id": "nested", "type": "nested"}, {"id": "date", "type": "date"}, {"id": "text array", "type": "text[]"}, @@ -62,7 +62,7 @@ def test_creates_fts_index_on_all_fields_except_dates_nested_and_arrays_with_eng "text", connection, resource_id, "english" ) self._assert_created_index_on( - "number", connection, resource_id, "english", cast=True + "tsvector", connection, resource_id, ) @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") diff --git a/ckanext/datastore/tests/test_helpers.py b/ckanext/datastore/tests/test_helpers.py index 806c6188f65..7d79ac4c132 100644 --- a/ckanext/datastore/tests/test_helpers.py +++ b/ckanext/datastore/tests/test_helpers.py @@ -48,7 +48,7 @@ def test_is_single_statement(self): assert postgres_backend.is_single_statement(multiple) is False def test_should_fts_index_field_type(self): - indexable_field_types = ["tsvector", "text", "number"] + indexable_field_types = ["tsvector", "text"] non_indexable_field_types = [ "nested", From 9db05c980e60f981f49976d58803e6541813724d Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Wed, 13 Nov 2024 23:12:19 -0500 Subject: [PATCH 02/10] [#5847] changes --- changes/5847.feature | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 changes/5847.feature diff --git a/changes/5847.feature b/changes/5847.feature new file mode 100644 index 00000000000..2fea79aa97b --- /dev/null +++ b/changes/5847.feature @@ -0,0 +1,2 @@ +Allow configuring datastore full text field indexes with new +ckan.datastore.default_fts_index_field_types config option From 35ba5719705a6db03caeae543ab710065cd1fca3 Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Thu, 14 Nov 2024 14:53:10 -0500 Subject: [PATCH 03/10] [#5847] always index _full_text --- ckanext/datastore/backend/postgres.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ckanext/datastore/backend/postgres.py b/ckanext/datastore/backend/postgres.py index ab742f35460..a70a915eb08 100644 --- a/ckanext/datastore/backend/postgres.py +++ b/ckanext/datastore/backend/postgres.py @@ -722,7 +722,8 @@ def cast_as_text(x: str): full_text_field = {'type': 'tsvector', 'id': '_full_text'} for field in [full_text_field] + fields: - if not datastore_helpers.should_fts_index_field_type(field['type']): + if field['id'] != '_full_text' and not ( + datastore_helpers.should_fts_index_field_type(field['type'])): continue field_str = field['id'] From 964d6334394ca63990fa2eb88f6bdb26b10d6c1f Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Thu, 14 Nov 2024 21:27:45 -0500 Subject: [PATCH 04/10] [#5847] default to not create per-column full text indexes --- changes/5847.feature | 6 +++++- ckanext/datastore/config_declaration.yaml | 3 ++- ckanext/datastore/helpers.py | 2 +- ckanext/datastore/tests/test_create.py | 2 ++ ckanext/datastore/tests/test_db.py | 6 ++++++ ckanext/datastore/tests/test_helpers.py | 2 ++ ckanext/datastore/tests/test_plugin.py | 6 ++++++ 7 files changed, 24 insertions(+), 3 deletions(-) diff --git a/changes/5847.feature b/changes/5847.feature index 2fea79aa97b..7d2e7490733 100644 --- a/changes/5847.feature +++ b/changes/5847.feature @@ -1,2 +1,6 @@ Allow configuring datastore full text field indexes with new -ckan.datastore.default_fts_index_field_types config option +ckan.datastore.default_fts_index_field_types config option. + +The default is an empty list, avoiding automatically creating +separate full text indexes for any individual columns. The +whole-row full text index still exists for all tables. diff --git a/ckanext/datastore/config_declaration.yaml b/ckanext/datastore/config_declaration.yaml index 615a34f743f..bec365ee7f9 100644 --- a/ckanext/datastore/config_declaration.yaml +++ b/ckanext/datastore/config_declaration.yaml @@ -102,7 +102,8 @@ groups: - key: ckan.datastore.default_fts_index_field_types type: list - default: text tsvector + default: '' + example: text tsvector description: > A separate full-text search index will be created by default for fields with these types, and used when searching on fields by passing a diff --git a/ckanext/datastore/helpers.py b/ckanext/datastore/helpers.py index 046362cc13a..d7cd5b7814a 100644 --- a/ckanext/datastore/helpers.py +++ b/ckanext/datastore/helpers.py @@ -83,7 +83,7 @@ def _strip(s: Any): def should_fts_index_field_type(field_type: str): return field_type in tk.config.get( - 'ckan.datastore.default_fts_index_field_types', ['text', 'tsvector']) + 'ckan.datastore.default_fts_index_field_types', []) def get_table_and_function_names_from_sql(context: Context, sql: str): diff --git a/ckanext/datastore/tests/test_create.py b/ckanext/datastore/tests/test_create.py index c9349044cab..36a76b2c4fb 100644 --- a/ckanext/datastore/tests/test_create.py +++ b/ckanext/datastore/tests/test_create.py @@ -159,6 +159,8 @@ def test_create_adds_index_on_full_text_search_when_not_creating_other_indexes( resource_id = result["resource_id"] assert self._has_index_on_field(resource_id, '"_full_text"') + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text") def test_create_add_full_text_search_indexes_on_every_text_field(self): package = factories.Dataset() data = { diff --git a/ckanext/datastore/tests/test_db.py b/ckanext/datastore/tests/test_db.py index 987028b87ee..d5448b84156 100644 --- a/ckanext/datastore/tests/test_db.py +++ b/ckanext/datastore/tests/test_db.py @@ -39,6 +39,8 @@ def test_default_fts_index_method_can_be_overwritten_by_config_var(self): "_full_text", connection, resource_id, method="gin" ) + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text tsvector") @mock.patch("ckanext.datastore.backend.postgres._get_fields") def test_creates_fts_index_on_all_fields_except_dates_nested_and_arrays_with_english_as_default( self, _get_fields @@ -65,6 +67,8 @@ def test_creates_fts_index_on_all_fields_except_dates_nested_and_arrays_with_eng "tsvector", connection, resource_id, ) + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text tsvector") @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") @mock.patch("ckanext.datastore.backend.postgres._get_fields") def test_creates_fts_index_on_textual_fields_can_overwrite_lang_with_config_var( @@ -80,6 +84,8 @@ def test_creates_fts_index_on_textual_fields_can_overwrite_lang_with_config_var( self._assert_created_index_on("foo", connection, resource_id, "simple") + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text tsvector") @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") @mock.patch("ckanext.datastore.backend.postgres._get_fields") def test_creates_fts_index_on_textual_fields_can_overwrite_lang_using_lang_param( diff --git a/ckanext/datastore/tests/test_helpers.py b/ckanext/datastore/tests/test_helpers.py index 7d79ac4c132..1aaaed5eb16 100644 --- a/ckanext/datastore/tests/test_helpers.py +++ b/ckanext/datastore/tests/test_helpers.py @@ -47,6 +47,8 @@ def test_is_single_statement(self): for multiple in multiples: assert postgres_backend.is_single_statement(multiple) is False + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text tsvector") def test_should_fts_index_field_type(self): indexable_field_types = ["tsvector", "text"] diff --git a/ckanext/datastore/tests/test_plugin.py b/ckanext/datastore/tests/test_plugin.py index f8c34928c7c..fa2d2efa14e 100644 --- a/ckanext/datastore/tests/test_plugin.py +++ b/ckanext/datastore/tests/test_plugin.py @@ -113,6 +113,8 @@ def test_ignores_fts_searches_on_inexistent_fields(self): assert result["where"] == [] + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text") def test_fts_where_clause_lang_uses_english_by_default(self): expected_where = [ ( @@ -129,6 +131,8 @@ def test_fts_where_clause_lang_uses_english_by_default(self): assert result["where"] == expected_where + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text") @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") def test_fts_where_clause_lang_can_be_overwritten_by_config(self): expected_where = [ @@ -146,6 +150,8 @@ def test_fts_where_clause_lang_can_be_overwritten_by_config(self): assert result["where"] == expected_where + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text") @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") def test_fts_where_clause_lang_can_be_overwritten_using_lang_param(self): expected_where = [ From 0b1ef99ab93ce97ec63466c5e06cb5c62f1e7387 Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Mon, 25 Nov 2024 17:00:01 -0500 Subject: [PATCH 05/10] [#5847] update tests --- ckanext/datastore/backend/postgres.py | 40 ++---------------- ckanext/datastore/tests/test_db.py | 58 ++++++++++++++++++++++++++ ckanext/datastore/tests/test_plugin.py | 32 ++++++-------- 3 files changed, 74 insertions(+), 56 deletions(-) diff --git a/ckanext/datastore/backend/postgres.py b/ckanext/datastore/backend/postgres.py index a70a915eb08..af07e6780ce 100644 --- a/ckanext/datastore/backend/postgres.py +++ b/ckanext/datastore/backend/postgres.py @@ -445,7 +445,7 @@ def _where_clauses( # add full-text search where clause q: Union[dict[str, str], str, Any] = data_dict.get('q') full_text = data_dict.get('full_text') - if q and not full_text: + if q: if isinstance(q, str): ts_query_alias = _ts_query_alias() clause_str = u'_full_text @@ {0}'.format(ts_query_alias) @@ -461,6 +461,7 @@ def _where_clauses( if not datastore_helpers.should_fts_index_field_type(ftyp): clause_str = u'_full_text @@ {0}'.format(query_field) clauses.append((clause_str,)) + continue clause_str = ( u'to_tsvector({0}, cast({1} as text)) @@ {2}').format( @@ -468,19 +469,7 @@ def _where_clauses( identifier(field), query_field) clauses.append((clause_str,)) - elif (full_text and not q): - ts_query_alias = _ts_query_alias() - clause_str = u'_full_text @@ {0}'.format(ts_query_alias) - clauses.append((clause_str,)) - - elif full_text and isinstance(q, dict): - ts_query_alias = _ts_query_alias() - clause_str = u'_full_text @@ {0}'.format(ts_query_alias) - clauses.append((clause_str,)) - # update clauses with q dict - _update_where_clauses_on_q_dict(data_dict, fields_types, q, clauses) - - elif full_text and isinstance(q, str): + if full_text: ts_query_alias = _ts_query_alias() clause_str = u'_full_text @@ {0}'.format(ts_query_alias) clauses.append((clause_str,)) @@ -488,29 +477,6 @@ def _where_clauses( return clauses -def _update_where_clauses_on_q_dict( - data_dict: dict[str, str], fields_types: dict[str, str], - q: dict[str, str], - clauses: WhereClauses) -> None: - lang = _fts_lang(data_dict.get('language')) - for field, _ in q.items(): - if field not in fields_types: - continue - query_field = _ts_query_alias(field) - - ftyp = fields_types[field] - if not datastore_helpers.should_fts_index_field_type(ftyp): - clause_str = u'_full_text @@ {0}'.format(query_field) - clauses.append((clause_str,)) - - clause_str = ( - u'to_tsvector({0}, cast({1} as text)) @@ {2}').format( - literal_string(lang), - identifier(field), - query_field) - clauses.append((clause_str,)) - - def _textsearch_query( lang: str, q: Optional[Union[str, dict[str, str], Any]], plain: bool, full_text: Optional[str]) -> tuple[str, dict[str, str]]: diff --git a/ckanext/datastore/tests/test_db.py b/ckanext/datastore/tests/test_db.py index d5448b84156..486998edee6 100644 --- a/ckanext/datastore/tests/test_db.py +++ b/ckanext/datastore/tests/test_db.py @@ -67,6 +67,32 @@ def test_creates_fts_index_on_all_fields_except_dates_nested_and_arrays_with_eng "tsvector", connection, resource_id, ) + @mock.patch("ckanext.datastore.backend.postgres._get_fields") + def test_creates_no_fts_indexes_by_default( + self, _get_fields + ): + _get_fields.return_value = [ + {"id": "text", "type": "text"}, + {"id": "tsvector", "type": "tsvector"}, + {"id": "nested", "type": "nested"}, + {"id": "date", "type": "date"}, + {"id": "text array", "type": "text[]"}, + {"id": "timestamp", "type": "timestamp"}, + ] + connection = mock.MagicMock() + context = {"connection": connection} + resource_id = "resource_id" + data_dict = {"resource_id": resource_id} + + db.create_indexes(context, data_dict) + + self._assert_no_index_created_on( + "text", connection, resource_id, "english" + ) + self._assert_no_index_created_on( + "tsvector", connection, resource_id, + ) + @pytest.mark.ckan_config( "ckan.datastore.default_fts_index_field_types", "text tsvector") @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") @@ -133,6 +159,38 @@ def _assert_created_index_on( "called with a string containing '%s'" % sql_str ) + def _assert_no_index_created_on( + self, + field, + connection, + resource_id, + lang=None, + cast=False, + method="gist", + ): + field = u'"{0}"'.format(field) + if cast: + field = u"cast({0} AS text)".format(field) + if lang is not None: + sql_str = ( + u'ON "resource_id" ' + u"USING {method}(to_tsvector('{lang}', {field}))" + ) + sql_str = sql_str.format(method=method, lang=lang, field=field) + else: + sql_str = u"USING {method}({field})".format( + method=method, field=field + ) + + calls = connection.execute.call_args_list + + was_called = any(sql_str in str(call.args[0]) for call in calls) + + assert not was_called, ( + "Expected 'connection.execute' to not have been " + "called with a string containing '%s'" % sql_str + ) + class TestGetAllResourcesIdsInDatastore(object): @pytest.mark.ckan_config(u"ckan.plugins", u"datastore") diff --git a/ckanext/datastore/tests/test_plugin.py b/ckanext/datastore/tests/test_plugin.py index fa2d2efa14e..c7e6ab23c06 100644 --- a/ckanext/datastore/tests/test_plugin.py +++ b/ckanext/datastore/tests/test_plugin.py @@ -131,14 +131,10 @@ def test_fts_where_clause_lang_uses_english_by_default(self): assert result["where"] == expected_where - @pytest.mark.ckan_config( - "ckan.datastore.default_fts_index_field_types", "text") - @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") - def test_fts_where_clause_lang_can_be_overwritten_by_config(self): + def test_q_field_with_no_fts_uses_general_full_text(self): expected_where = [ ( - u"to_tsvector('simple', cast(\"country\" as text))" - u' @@ "query country"', + '_full_text @@ "query country"', ) ] data_dict = {"q": {"country": "Brazil"}} @@ -153,14 +149,14 @@ def test_fts_where_clause_lang_can_be_overwritten_by_config(self): @pytest.mark.ckan_config( "ckan.datastore.default_fts_index_field_types", "text") @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") - def test_fts_where_clause_lang_can_be_overwritten_using_lang_param(self): + def test_fts_where_clause_lang_can_be_overwritten_by_config(self): expected_where = [ ( - u"to_tsvector('french', cast(\"country\" as text))" + u"to_tsvector('simple', cast(\"country\" as text))" u' @@ "query country"', ) ] - data_dict = {"q": {"country": "Brazil"}, "language": "french"} + data_dict = {"q": {"country": "Brazil"}} fields_types = {"country": "text"} result = self._datastore_search( @@ -169,20 +165,18 @@ def test_fts_where_clause_lang_can_be_overwritten_using_lang_param(self): assert result["where"] == expected_where - @mock.patch("ckanext.datastore.helpers.should_fts_index_field_type") - def test_fts_adds_where_clause_on_full_text_when_querying_non_indexed_fields( - self, should_fts_index_field_type - ): - should_fts_index_field_type.return_value = False + @pytest.mark.ckan_config( + "ckan.datastore.default_fts_index_field_types", "text") + @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") + def test_fts_where_clause_lang_can_be_overwritten_using_lang_param(self): expected_where = [ - ('_full_text @@ "query country"',), ( - u"to_tsvector('english', cast(\"country\" as text))" + u"to_tsvector('french', cast(\"country\" as text))" u' @@ "query country"', - ), + ) ] - data_dict = {"q": {"country": "Brazil"}, "language": "english"} - fields_types = {"country": "non-indexed field type"} + data_dict = {"q": {"country": "Brazil"}, "language": "french"} + fields_types = {"country": "text"} result = self._datastore_search( data_dict=data_dict, fields_types=fields_types From 928849fe347d55afc3e2f2fa658d584d42dbad50 Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Mon, 25 Nov 2024 17:12:13 -0500 Subject: [PATCH 06/10] [#5847] use original test names --- ckanext/datastore/tests/test_plugin.py | 32 ++++++++++++++------------ 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/ckanext/datastore/tests/test_plugin.py b/ckanext/datastore/tests/test_plugin.py index c7e6ab23c06..b7f88aad292 100644 --- a/ckanext/datastore/tests/test_plugin.py +++ b/ckanext/datastore/tests/test_plugin.py @@ -131,21 +131,6 @@ def test_fts_where_clause_lang_uses_english_by_default(self): assert result["where"] == expected_where - def test_q_field_with_no_fts_uses_general_full_text(self): - expected_where = [ - ( - '_full_text @@ "query country"', - ) - ] - data_dict = {"q": {"country": "Brazil"}} - fields_types = {"country": "text"} - - result = self._datastore_search( - data_dict=data_dict, fields_types=fields_types - ) - - assert result["where"] == expected_where - @pytest.mark.ckan_config( "ckan.datastore.default_fts_index_field_types", "text") @pytest.mark.ckan_config("ckan.datastore.default_fts_lang", "simple") @@ -184,6 +169,23 @@ def test_fts_where_clause_lang_can_be_overwritten_using_lang_param(self): assert result["where"] == expected_where + @mock.patch("ckanext.datastore.helpers.should_fts_index_field_type") + def test_fts_adds_where_clause_on_full_text_when_querying_non_indexed_fields( + self, should_fts_index_field_type + ): + should_fts_index_field_type.return_value = False + expected_where = [ + ('_full_text @@ "query country"',), + ] + data_dict = {"q": {"country": "Brazil"}, "language": "english"} + fields_types = {"country": "non-indexed field type"} + + result = self._datastore_search( + data_dict=data_dict, fields_types=fields_types + ) + + assert result["where"] == expected_where + def _datastore_search( self, context={}, data_dict={}, fields_types={}, query_dict={} ): From dca2183fd749246439de247da1abbd9e608f6166 Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Mon, 25 Nov 2024 17:23:23 -0500 Subject: [PATCH 07/10] [#5847] restore specific field fts check --- ckanext/datastore/backend/postgres.py | 1 - ckanext/datastore/tests/test_plugin.py | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ckanext/datastore/backend/postgres.py b/ckanext/datastore/backend/postgres.py index af07e6780ce..0dbceaccdc9 100644 --- a/ckanext/datastore/backend/postgres.py +++ b/ckanext/datastore/backend/postgres.py @@ -461,7 +461,6 @@ def _where_clauses( if not datastore_helpers.should_fts_index_field_type(ftyp): clause_str = u'_full_text @@ {0}'.format(query_field) clauses.append((clause_str,)) - continue clause_str = ( u'to_tsvector({0}, cast({1} as text)) @@ {2}').format( diff --git a/ckanext/datastore/tests/test_plugin.py b/ckanext/datastore/tests/test_plugin.py index b7f88aad292..fa2d2efa14e 100644 --- a/ckanext/datastore/tests/test_plugin.py +++ b/ckanext/datastore/tests/test_plugin.py @@ -176,6 +176,10 @@ def test_fts_adds_where_clause_on_full_text_when_querying_non_indexed_fields( should_fts_index_field_type.return_value = False expected_where = [ ('_full_text @@ "query country"',), + ( + u"to_tsvector('english', cast(\"country\" as text))" + u' @@ "query country"', + ), ] data_dict = {"q": {"country": "Brazil"}, "language": "english"} fields_types = {"country": "non-indexed field type"} From bf9f7d68a65a2112041c948cdb39471c4a19c2eb Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Wed, 27 Nov 2024 10:47:44 -0500 Subject: [PATCH 08/10] [#5847] cli: ckan datastore ftx-index --- ckanext/datastore/backend/postgres.py | 27 ++++++----- ckanext/datastore/cli.py | 64 ++++++++++++++++----------- 2 files changed, 53 insertions(+), 38 deletions(-) diff --git a/ckanext/datastore/backend/postgres.py b/ckanext/datastore/backend/postgres.py index 0dbceaccdc9..46289bd339f 100644 --- a/ckanext/datastore/backend/postgres.py +++ b/ckanext/datastore/backend/postgres.py @@ -459,6 +459,7 @@ def _where_clauses( ftyp = fields_types[field] if not datastore_helpers.should_fts_index_field_type(ftyp): + # use general full text search to narrow results clause_str = u'_full_text @@ {0}'.format(query_field) clauses.append((clause_str,)) @@ -674,6 +675,7 @@ def _build_fts_indexes( data_dict: dict[str, Any], # noqa sql_index_str_method: str, fields: list[dict[str, Any]]): fts_indexes: list[str] = [] + fts_noindexes: list[str] = [] resource_id = data_dict['resource_id'] fts_lang = data_dict.get( 'language', config.get('ckan.datastore.default_fts_lang')) @@ -687,10 +689,6 @@ def cast_as_text(x: str): full_text_field = {'type': 'tsvector', 'id': '_full_text'} for field in [full_text_field] + fields: - if field['id'] != '_full_text' and not ( - datastore_helpers.should_fts_index_field_type(field['type'])): - continue - field_str = field['id'] if field['type'] not in ['text', 'tsvector']: field_str = cast_as_text(field_str) @@ -698,13 +696,18 @@ def cast_as_text(x: str): field_str = u'"{0}"'.format(field_str) if field['type'] != 'tsvector': field_str = to_tsvector(field_str) + if field['id'] != '_full_text' and not ( + datastore_helpers.should_fts_index_field_type(field['type'])): + fts_noindexes.append(_generate_index_name(resource_id, field_str)) + continue + fts_indexes.append(sql_index_str_method.format( res_id=resource_id, unique='', name=_generate_index_name(resource_id, field_str), method=_get_fts_index_method(), fields=field_str)) - return fts_indexes + return fts_indexes, fts_noindexes def _drop_indexes(context: Context, data_dict: dict[str, Any], @@ -910,9 +913,8 @@ def create_indexes(context: Context, data_dict: dict[str, Any]): field_ids = _pluck('id', fields) json_fields = [x['id'] for x in fields if x['type'] == 'nested'] - fts_indexes = _build_fts_indexes(data_dict, - sql_index_string_method, - fields) + fts_indexes, fts_noindexes = _build_fts_indexes( + data_dict, sql_index_string_method, fields) sql_index_strings = sql_index_strings + fts_indexes if indexes is not None: @@ -952,10 +954,13 @@ def create_indexes(context: Context, data_dict: dict[str, Any]): current_indexes = _get_index_names(context['connection'], data_dict['resource_id']) + + for fts_idx in current_indexes: + if fts_idx in fts_noindexes: + connection.execute(sa.text( + 'DROP INDEX {0} CASCADE'.format(sa.column(fts_idx)))) for sql_index_string in sql_index_strings: - has_index = [c for c in current_indexes - if sql_index_string.find(c) != -1] - if not has_index: + if not any(c in sql_index_string for c in current_indexes): connection.execute(sa.text(sql_index_string)) diff --git a/ckanext/datastore/cli.py b/ckanext/datastore/cli.py index 6162d2cb8e7..fe97152d187 100644 --- a/ckanext/datastore/cli.py +++ b/ckanext/datastore/cli.py @@ -13,12 +13,14 @@ import ckan.logic as logic import ckanext.datastore as datastore_module +from ckanext.datastore.backend import get_all_resources_ids_in_datastore from ckanext.datastore.backend.postgres import ( identifier, literal_string, get_read_engine, get_write_engine, _get_raw_field_info, + _TIMEOUT, ) from ckanext.datastore.blueprint import DUMP_FORMATS, dump_to @@ -137,27 +139,17 @@ def purge(): site_user = logic.get_action('get_site_user')({'ignore_auth': True}, {}) - result = logic.get_action('datastore_search')( - {'user': site_user['name']}, - {'resource_id': '_table_metadata'} - ) - resource_id_list = [] - for record in result['records']: + for resid in get_all_resources_ids_in_datastore(): try: - # ignore 'alias' records (views) as they are automatically - # deleted when the parent resource table is dropped - if record['alias_of']: - continue - logic.get_action('resource_show')( {'user': site_user['name']}, - {'id': record['name']} + {'id': resid} ) except logic.NotFound: - resource_id_list.append(record['name']) + resource_id_list.append(resid) click.echo("Resource '%s' orphaned - queued for drop" % - record[u'name']) + resid) except KeyError: continue @@ -191,22 +183,12 @@ def upgrade(): '''Move field info to _info so that plugins may add private information to each field for their own purposes.''' - site_user = logic.get_action('get_site_user')({'ignore_auth': True}, {}) - - result = logic.get_action('datastore_search')( - {'user': site_user['name']}, - {'resource_id': '_table_metadata'} - ) - count = 0 skipped = 0 noinfo = 0 read_connection = get_read_engine() - for record in result['records']: - if record['alias_of']: - continue - - raw_fields, old = _get_raw_field_info(read_connection, record['name']) + for resid in get_all_resources_ids_in_datastore(): + raw_fields, old = _get_raw_field_info(read_connection, resid) if not old: if not raw_fields: noinfo += 1 @@ -222,7 +204,7 @@ def upgrade(): raw_sql = literal_string(' ' + json.dumps( raw, ensure_ascii=False, separators=(',', ':'))) alter_sql.append(u'COMMENT ON COLUMN {0}.{1} is {2}'.format( - identifier(record['name']), + identifier(resid), identifier(fid), raw_sql)) @@ -236,5 +218,33 @@ def upgrade(): count, skipped, noinfo)) +@datastore.command( + 'fts-index', + short_help='create or remove full-text search indexes after changing ' + 'the ckan.datastore.default_fts_index_field_types setting' +) +@click.option( + '--timeout', metavar='SECONDS', + type=click.FloatRange(0, 2147483.647), # because postgres max int + default=_TIMEOUT / 1000, show_default=True, + help='maximum index creation time in seconds', +) +def fts_index(timeout: float): + '''Use to create or remove full-text search indexes after changing + the ckan.datastore.default_fts_index_field_types setting. + ''' + site_user = logic.get_action('get_site_user')({'ignore_auth': True}, {}) + resource_ids = get_all_resources_ids_in_datastore() + + for i, resid in enumerate(get_all_resources_ids_in_datastore(), 1): + print(f'\r{resid} [{i}/{len(resource_ids)}] ...', end='') + logic.get_action('datastore_create')( + {'user': site_user['name'], + 'query_timeout': int(timeout * 1000)}, # type: ignore + {'resource_id': resid, 'force': True} + ) + print('\x08\x08\x08done') + + def get_commands(): return (set_permissions, dump, purge, upgrade) From 3456b158c7ece65df99d28142dca30829ac5636e Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Wed, 27 Nov 2024 10:54:34 -0500 Subject: [PATCH 09/10] [#5847] changelog: ckan datastore fts-index --- changes/5847.feature | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changes/5847.feature b/changes/5847.feature index 7d2e7490733..7ae46522af4 100644 --- a/changes/5847.feature +++ b/changes/5847.feature @@ -4,3 +4,6 @@ ckan.datastore.default_fts_index_field_types config option. The default is an empty list, avoiding automatically creating separate full text indexes for any individual columns. The whole-row full text index still exists for all tables. + +Use the `ckan datastore fts-index` command to remove existing +column indexes to reclaim database space. From f3023ae61989911143dc3ef9627791eeff089fa5 Mon Sep 17 00:00:00 2001 From: Ian Ward Date: Wed, 27 Nov 2024 11:08:20 -0500 Subject: [PATCH 10/10] [#5847] restore test_durations --- .test_durations.gz | Bin 0 -> 70345 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .test_durations.gz diff --git a/.test_durations.gz b/.test_durations.gz new file mode 100644 index 0000000000000000000000000000000000000000..a2b0b744f4dccd7c3108ac4a54b60beda8a3b90a GIT binary patch literal 70345 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