This message is long. I have a few questions surrounding the Query
Extractor and the Query
Dispatcher.
1. Query Extractor: picking up wrong procs?
Is this the correct behavior for the Query Extractor?
from ecommerce-widgets-procs.tcl
proc ec_creditcard_widget { {default ""} } {
(no db query statements)
}
proc_doc ec_date_widget {column {date ""}} {Generates a date widget.}
{
switch $date {
now {
set date [db_string date_widget_select "select to_char
(sysdate, 'YYYY-MM-DD') from
dual"]
}
}
...
}
proc_doc ec_time_widget {column {time ""}} {Generates a time widget.}
{
switch $time {
now {
set time [db_string time_widget_select "select to_char
(sysdate, 'HH24:MI:SS') from
dual"]
}
}
...
}
extracted to ecommerce-widgets-procs-postgresql.xql
...
<fullquery name="ec_creditcard_widget.date_widget_select">
<querytext>
select to_char(current_timestamp, 'YYYY-MM-DD')
</querytext>
</fullquery>
<fullquery name="ec_creditcard_widget.time_widget_select">
<querytext>
select to_char(current_timestamp, 'HH24:MI:SS')
</querytext>
</fullquery>
...
If I understand how the QD works, shouldn't the fullquery names be:
ec_date_widget.date_widget_select
ec_time_widget.time_widget_select
For some reason, the QE latched on to ec_creditcard_widget and
used that.
2. Query Extractor: query passed in as variables
I have several instances where the Query Extractor missed queries
of this format:
set sql_query "some sql query ..."
db_foreach query_name $sql_query { ... }
It didn't extract the query and write it to the appropriate .xql
file. Is this a normal
behavior for the QE?
3. Query Dispatcher: "documented proc"
I got the following error message (in debug mode) when running a
query:
[17/Jul/2001:18:13:27][24011.5][-conn0-] Debug: QD_LOGGER = proc_name
is
-ec_category_widget-
[17/Jul/2001:18:13:27][24011.5][-conn0-] Debug: QD_LOGGER = there is
no documented proc with
name ec_category_widget -- we used default SQL
[17/Jul/2001:18:13:27][24011.5][-conn0-] Debug: QD_LOGGER = PRE-QD:
the SQL is
select c.category_id, c.category_name,
s.subcategory_id, s.subcategory_name,
ss.subsubcategory_id, ss.subsubcategory_name
from ec_categories c, ec_subcategories s, ec_subsubcategories ss
where c.category_id = s.category_id (+)
and s.subcategory_id = ss.subcategory_id (+)
order by c.sort_key, s.sort_key, ss.sort_key for dbqd..NULL
...
The query was in the form of the previous problem (#2 above). So
I had to manually add
the code in the .xql file.
from ecommerce-widgets-procs.tcl
proc ec_category_widget { {multiple_p "f"} {default ""}
{allow_null_categorization "f"}} {
...
set sql "
select c.category_id, c.category_name,
s.subcategory_id, s.subcategory_name,
ss.subsubcategory_id, ss.subsubcategory_name
from ec_categories c, ec_subcategories s, ec_subsubcategories ss
where c.category_id = s.category_id (+)
and s.subcategory_id = ss.subcategory_id (+)
order by c.sort_key, s.sort_key, ss.sort_key"
set category_counter 0
set old_category_id ""
set old_subcategory_id ""
db_foreach get_category_info_joined_w_children $sql {
incr category_counter
...
}
...
from ecommerce-widgets-procs-postgresql.xql
...
<fullquery
name="ec_category_widget.get_category_info_joined_w_children">
<querytext>
select c.category_id, c.category_name,
s.subcategory_id, s.subcategory_name,
ss.subsubcategory_id, ss.subsubcategory_name
from ec_categories c
LEFT JOIN ec_subcategories s using (category_id)
LEFT JOIN ec_subsubcategories ss on (s.subcategory_id =
ss.subcategory_id)
order by c.sort_key, s.sort_key, ss.sort_key
</querytext>
</fullquery>
...
Looks like the QD isn't picking up this query. I hope I didn't
make any spelling error :) Any ideas on the above problems? Thanks!