[ic] [query] causes [more] to generate non-unique mv_cache_key
Daniel Browning
db at kavod.com
Tue Oct 26 21:59:15 EDT 2004
This bug has subtle but important effects for anyone using [query] & [more].
The [more] tag generates a unique mv_cache_key for [list], [search-region],
etc., but when used with [query], it never does. This is because it is
using an incorrect "message" for generating the key: it uses the first 100
characters that come after the closing bracket of "[query]", which are never
unique.
Here is a patch that causes it to use the "sql" (e.g. "select * from ...") as
the unique message. It works for me -- what do you think about it? Otherwise,
I think our only option is nothing, i.e. time().
http://www.icdevgroup.org/~danb/fix_more_cache_key.patch
+++ Interpolate.pm 2004-10-26 18:50:25.643328006 -0700
@@ -4547,7 +4547,7 @@
$obj->{mv_matchlimit} = $opt->{ml};
$obj->{mv_more_decade} = $opt->{md};
$obj->{matches} = scalar @{$obj->{mv_results}};
- $obj->{mv_cache_key} = generate_key(substr($page,0,100));
+ $obj->{mv_cache_key} = generate_key(substr($opt->{query} || $page,0,100));
$obj->{mv_first_match} = $opt->{fm} if $opt->{fm};
$obj->{mv_search_page} = $opt->{sp} if $opt->{sp};
$obj->{prefix} = $opt->{prefix} if $opt->{prefix};
Here is an example of how to reproduce the problem:
[query ml="5" more=1 type=list
sql="select * from products where prod_group = 'Hand Tools'"
]
[on-match] [more-list] [more] [/more-list] <br> [/on-match]
[list] [sql-param sku]<br> [/list]
[/query]
This will be used as the message:
"[on-match] [more-list] [more] [/more-list] <br> [/on-match]
[list] [sql-param sku]<br> [/li"
Whereas for a normal search (e.g. [loop]), it would use something like this:
scan/fi=products/sf=prod_group/op=eq/se=Hand%20Tools/st=db/ml=5
Apparently, $page is whatever comes after [query], and that is never unique for
each query. I have confirmed this bug in 4.9.9, 5.2.0, and CVS 2004-10-26.
--
Daniel Browning <db at kavod.com> - Kavod Technologies. Random Fortune:
Youth is a disease from which we all recover.
-- Dorothy Fuldheim
More information about the interchange-users
mailing list