diff --git a/core/filter_api.php b/core/filter_api.php
index f8de0f8..b9bd6eb 100644
--- a/core/filter_api.php
+++ b/core/filter_api.php
@@ -1957,11 +1957,20 @@ function filter_get_bug_rows( &$p_page_number, &$p_per_page, &$p_page_count, &$p
 			$t_where_params[] = $c_search;
 
 			if( is_numeric( $t_search_term ) ) {
-				$c_search_int = (int) $t_search_term;
-				$t_textsearch_where_clause .= " OR $t_bug_table.id = " . db_param();
-				$t_textsearch_where_clause .= " OR $t_bugnote_table.id = " . db_param();
-				$t_where_params[] = $c_search_int;
-				$t_where_params[] = $c_search_int;
+				// PostgreSQL on 64-bit OS hack (see #14014)
+				if( PHP_INT_MAX > 0x7FFFFFFF && db_is_pgsql() ) {
+					$t_search_max = 0x7FFFFFFF;
+				} else {
+					$t_search_max = PHP_INT_MAX;
+				}
+				// Note: no need to test negative values, '-' sign is removed above
+				if( $t_search_term <= $t_search_max ) {
+					$c_search_int = (int) $t_search_term;
+					$t_textsearch_where_clause .= " OR $t_bug_table.id = " . db_param();
+					$t_textsearch_where_clause .= " OR $t_bugnote_table.id = " . db_param();
+					$t_where_params[] = $c_search_int;
+					$t_where_params[] = $c_search_int;
+				}
 			}
 
 			$t_textsearch_where_clause .= ' )';
