rdb$set_context in stored proc NULL-s the context value
-------------------------------------------------------

                 Key: CORE-3613
                 URL: http://tracker.firebirdsql.org/browse/CORE-3613
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 2.5.0
            Reporter: Attila Molnár
            Priority: Minor


Hi!

I want to use stored procedures for context read/write to hide database 
dependent implementation of the context variable usage, so I created the next 
two SP. The getter works fine, but the setter sets the context value to NULL. 

CREATE OR ALTER PROCEDURE context_set (
    namespace VARCHAR(80),
    variablename VARCHAR(80),
    context_value VARCHAR(255))
RETURNS (
    existed INTEGER)
AS
BEGIN
  context_value = NULL;
  namespace =
      CASE namespace
          WHEN 'GLOBAL' THEN 'SYSTEM'
          WHEN 'CONNECTION' THEN 'USER_SESSION'
          WHEN 'TRANSACTION' THEN 'USER_TRANSACTION'
          ELSE namespace
      END;
  SELECT rdb$set_context(TRIM(:namespace), TRIM(:variablename), :context_value)
  FROM rdb$database
  INTO existed;
  SUSPEND;
END

CREATE OR ALTER PROCEDURE context_get (
    namespace VARCHAR(80),
    variablename VARCHAR(80))
RETURNS (
    context_value VARCHAR(255))
AS
BEGIN
  context_value = NULL;
  namespace =
      CASE namespace
          WHEN 'GLOBAL' THEN 'SYSTEM'
          WHEN 'CONNECTION' THEN 'USER_SESSION'
          WHEN 'TRANSACTION' THEN 'USER_TRANSACTION'
          ELSE namespace
      END;
  SELECT rdb$get_context(TRIM(:namespace), TRIM(:variablename))
  FROM rdb$database
  INTO context_value;
  SUSPEND;
END

--set via direct sql
SELECT rdb$set_context('USER_SESSION', 'USER', 'X')
FROM rdb$database

--get via direct sql : ok
SELECT rdb$get_context('USER_SESSION', 'USER')
FROM rdb$database

--get via procedure : ok
SELECT *
FROM context_get('USER_SESSION', 'USER')

--set via procedure
SELECT *
FROM context_set('USER_SESSION', 'USER', 'Y')

--get via direct sql : not ok
SELECT rdb$get_context('USER_SESSION', 'USER')
FROM rdb$database

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to