Skip to content
This repository was archived by the owner on Nov 9, 2022. It is now read-only.

Commit f156aaa

Browse files
committed
#661: added more robustness, and made eval work against ml8
1 parent f2ebad2 commit f156aaa

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

deploy/lib/server_config.rb

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2412,8 +2412,10 @@ def execute_query_5(query, properties = {})
24122412
# 4. Any database
24132413
if properties[:db_name] != nil
24142414
db_id = get_db_id(properties[:db_name])
2415+
logger.warn "WARN: No Database with name #{properties[:db_name]} found" if db_id.nil?
24152416
elsif properties[:app_name] != nil
24162417
sid = get_sid(properties[:app_name])
2418+
logger.warn "WARN: No App-Server with name #{properties[:app_name]} found" if sid.nil?
24172419
else
24182420
sid = get_sid("Manage")
24192421
end
@@ -2454,8 +2456,10 @@ def execute_query_7(query, properties = {})
24542456
# 4. Any database
24552457
if properties[:db_name] != nil
24562458
db_id = get_db_id(properties[:db_name])
2459+
logger.warn "WARN: No Database with name #{properties[:db_name]} found" if db_id.nil?
24572460
elsif properties[:app_name] != nil
24582461
sid = get_sid(properties[:app_name])
2462+
logger.warn "WARN: No App-Server with name #{properties[:app_name]} found" if sid.nil?
24592463
else
24602464
sid = get_sid("Manage")
24612465
end
@@ -2487,11 +2491,22 @@ def execute_query_7(query, properties = {})
24872491
end
24882492

24892493
def execute_query_8(query, properties = {})
2494+
# check input like in older versions
2495+
if properties[:db_name] != nil
2496+
db_id = get_db_id(properties[:db_name])
2497+
raise ExitException.new("No Database with name #{properties[:db_name]} found") if db_id.nil?
2498+
elsif properties[:app_name] != nil
2499+
sid = get_sid(properties[:app_name])
2500+
raise ExitException.new("No Server with name #{properties[:app_name]} found") if sid.nil?
2501+
end
2502+
24902503
headers = {
24912504
"Content-Type" => "application/x-www-form-urlencoded"
24922505
}
24932506
params = {}
24942507

2508+
# If app_name is specified, wrap the eval in an xdmp:eval to create an eval context
2509+
# that matches that of the selected app-server
24952510
if properties[:app_name] != nil
24962511
params[:xquery] = %Q{
24972512
xquery version "1.0-ml";
@@ -2506,7 +2521,10 @@ def execute_query_8(query, properties = {})
25062521
let $modules-id := xdmp:server-modules-database($server-id)
25072522
let $xquery-version := xdmp:server-default-xquery-version($server-id)
25082523
let $modules-root := xdmp:server-root($server-id)
2509-
let $default-coordinate-system := xdmp:server-coordinate-system($server-id)
2524+
let $default-coordinate-system :=
2525+
(: xdmp:server-coordinate-system not supported in ML8 and older :)
2526+
for $f in fn:function-lookup(xs:QName("xdmp:server-coordinate-system"), 1)
2527+
return $f($server-id)
25102528
return
25112529
<options xmlns="xdmp:eval">{
25122530
if ($database-id eq xdmp:database()) then ()
@@ -2540,11 +2558,13 @@ def execute_query_8(query, properties = {})
25402558
)
25412559
}
25422560
else
2561+
# No app_name, just run the straight query
25432562
params[:xquery] = query
2544-
end
25452563

2546-
if properties[:db_name] != nil
2547-
params[:database] = properties[:db_name]
2564+
# Pass through selected database if specified, otherwise run against App-Services
2565+
if properties[:db_name] != nil
2566+
params[:database] = properties[:db_name]
2567+
end
25482568
end
25492569

25502570
r = go "#{@protocol}://#{@hostname}:#{@qconsole_port}/v1/eval", "post", headers, params

0 commit comments

Comments
 (0)