@@ -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