[Freeswitch-users] Spidermonkey ODBC

Brian West brian.west at mac.com
Wed Feb 20 13:04:39 EST 2008


I would wrap the query in a CDATA just to be safe.

/b

On Feb 20, 2008, at 10:23 AM, Jonas Gauffin wrote:

> ohh. yes ofcourse. didnt think of that.
>
> How about adding driver mapping into the odbcfile.
>
> for example:
>
> <section name="odbc">
>   <connection_check driver="default">SELECT 1</connection_check>
>   <connection_check driver="fb64">SELECT FIRST 1 * FROM RDB 
> $RELATIONS</connection_check>
>   <connection_check driver="firebird">SELECT FIRST 1 * FROM RDB 
> $RELATIONS</connection_check>
> </section>
>
> On Wed, Feb 20, 2008 at 4:54 PM, Michael Jerris <mike at jerris.com>  
> wrote:
> This check would have to be specific to each odbc connection, not  
> global to the switch, as you could be using different types of  
> databases for different connections.  I still lean towards a better  
> way of auto-detecting (probably in addition to a configurable  
> option) if it is at all possible.
>
>
> Mike
>
> On Feb 20, 2008, at 9:57 AM, Jonas Gauffin wrote:
>
>> Ok. I've done a patch and will upload it if the following config is  
>> ok by Anthony.
>>
>> (Either create odbc.conf.xml in autoload_configs or add it directly  
>> to freeswitch.xml)
>>
>>   <section name="odbc" description="odbc general options">
>>     <connection_check>SELECT 1</connection_check>
>>   </section>
>>
>> My patch will load that string when a new connection is created.
>>
>> On Wed, Feb 20, 2008 at 3:40 PM, <freeswitch at dalethatcher.com> wrote:
>> Could I suggest the 'db check' query be configurable?  Oracle is  
>> another
>> database which doesn't work with the 'select 1' and needs 'select 1  
>> from
>> dual'.  Then you can have the default as 'select 1' and let the end  
>> user
>> fiddle with the config for their own particular broken DB.
>>
>> Adding in special code to handle every database out there is going  
>> to be
>> a big headache for you.  If it isn't already.
>>
>> thanks,
>>
>> - Dale
>>
>> On Wed, Feb 20, 2008 at 06:08:08AM -0800, Anthony Minessale wrote:
>> > Many databases break silently or the connection drops
>> > without any way to know for sure w/o trying to use it.
>> >
>> > I choose to ensure in the core that the data is connected.
>> > executing "select 1" is a small price to pay to make sure
>> > that the database is connected considering the importance
>> > of persistent connectivity in the sip, jingle and call
>> > limit databases as well as the javascript that rely on it.
>> >
>> > All of those applications to make the safe
>> > assumption that the core will keep the db connected and
>> > to change that would be drastic behavior change and
>> > destabilize the code on the eve of our release.
>> >
>> > Therefore i guess we should focus on better heuristics
>> > to detect firebird, preferably based on the driver name
>> > and not by doing a 2nd sql stmt every time.
>> >
>> >
>> >
>> > Anthony Minessale II
>> >
>> > FreeSWITCH http://www.freeswitch.org/
>> > ClueCon http://www.cluecon.com/
>> >
>> > AIM: anthm
>> > MSN:anthony_minessale at hotmail.com
>> > GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>> > IRC: irc.freenode.net #freeswitch
>> >
>> > FreeSWITCH Developer Conference
>> > sip:888 at conference.freeswitch.org
>> > iax:guest at conference.freeswitch.org/888
>> > googletalk:conf+888 at conference.freeswitch.org
>> > pstn:213-799-1400
>> >
>> >
>> > ----- Original Message ----
>> > From: David Revill <davidrevill at datarun.co.uk>
>> > To: freeswitch-users at lists.freeswitch.org
>> > Sent: Tuesday, February 19, 2008 4:37:28 PM
>> > Subject: Re: [Freeswitch-users] Spidermonkey ODBC
>> >
>> >
>> >
>> >
>> >
>> > DIV {
>> > MARGIN:0px;}
>> >
>> >
>> >
>> >
>> > Unfortunately, there isn't a universal ansi sql
>> > stmt that will do it as the only statements which can be  
>> guaranteed to follow
>> > the ansi standard are the simple select, update and delete  
>> statements which rely
>> > on knowing some table name .
>> >
>> >
>> >
>> >
>> > I think we are trying to solve a problem which need
>> > not exist. The Javascript application should handle the idle  
>> timeout. It
>> > should close the connection if it will not be using it for a while,
>> > and,if it needs to, can do what db_is_up is attempting to do in the
>> > application code. Testing for connection before every query seems  
>> an
>> > unneccessary overhead.
>> >
>> >
>> >
>> >
>> >   ----- Original Message -----
>> >
>> >   From:
>> >   Anthony
>> >   Minessale
>> >
>> >   To: freeswitch-users at lists.freeswitch.org
>> >
>> >
>> >   Sent: Tuesday, February 19, 2008 6:38
>> >   PM
>> >
>> >   Subject: Re: [Freeswitch-users]
>> >   Spidermonkey ODBC
>> >
>> >
>> >
>> >
>> >   is
>> >   there some universal ansi sql stmt that is small and harmless
>> > but is
>> >   supported by everything? to replace "select 1"
>> >
>> >
>> >
>> >
>> >
>> >   Anthony Minessale II
>> >
>> > FreeSWITCH http://www.freeswitch.org/
>> > ClueCon http://www.cluecon.com/
>> >
>> > AIM:
>> >   anthm
>> > MSN:anthony_minessale at hotmail.com
>> > GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com
>> > IRC:
>> >   irc.freenode.net #freeswitch
>> >
>> >
>> > FreeSWITCH Developer
>> >   Conference
>> > sip:888 at conference.freeswitch.org
>> > iax:guest at conference.freeswitch.org/888
>> > googletalk:conf+888 at conference.freeswitch.org
>> > pstn:213-799-1400
>> >
>> >
>> >
>> >
>> >   -----
>> >   Original Message ----
>> > From: David Revill
>> >   <davidrevill at datarun.co.uk>
>> > To:
>> >   freeswitch-users at lists.freeswitch.org
>> > Sent: Tuesday, February 19, 2008
>> >   6:56:31 AM
>> > Subject: Re: [Freeswitch-users] Spidermonkey ODBC
>> >
>> >
>> >
>> >
>> >   One way to detect firebird would be to put the
>> >   'Select first 1  * from RDB$relations' into  
>> switch_odbc_handle_connect.
>> >   If it succeeds then it is Firebird. A better query might be  
>> 'select * from
>> >   rdb$database' as the system table rdb$database only ever has 1
>> >   record.
>> >
>> >
>> >     -----
>> >     Original Message -----
>> >
>> >     From:
>> >     Jonas
>> >     Gauffin
>> >
>> >     To:
>> >     freeswitch-users at lists.freeswitch.org
>> >
>> >
>> >     Sent:
>> >     Tuesday, February 19, 2008 12:18 PM
>> >
>> >     Subject:
>> >     Re: [Freeswitch-users] Spidermonkey ODBC
>> >
>> >
>> >
>> > I''ve only tested it with firebird on windows. As you said,
>> >     your driver name doesnt match any of the names I used to  
>> detect if it's
>> >     firebird.
>> >
>> > The problem is that most databases supports "SELECT 1" as a
>> >     query. It will always be successful if the the connection is  
>> up. However,
>> >     firebird did not support "SELECT 1" and therefore i did query  
>> the system
>> >     database instead.
>> >
>> > If the firebird check fails, it will try to invoke
>> >     "SELECT 1", and on firebird that query will fail. And the  
>> failure is
>> >     interpreted as the connection is down, and therefore it tries  
>> to
>> >     reconnect.
>> >
>> > That's probably why you get that error. If you have any
>> >     other idea on how I can detect if it's a firebird db, please  
>> let me know and
>> >     i'll fix the odbc code.
>> >
>> >
>> >     On Feb 19, 2008 1:05 PM, David Revill <davidrevill at datarun.co.uk 
>> >
>> >     wrote:
>> >
>> >
>> >
>> >       That's a fair point, but db_is_up is only
>> >       called in 2 places and the attempted re-connect could be  
>> done if the
>> >       exec'd query fails. That way it would not be dependant on  
>> the name of the
>> >       driver.
>> >
>> >
>> >
>> >       In my application, the database was queried
>> >       at the beginning of the script and the connection closed.  
>> It was
>> >       explicitly re-connected at the end to post data, so the  
>> connection timeout
>> >       was not an issue.
>> >
>> >
>> >
>> >         -----
>> >         Original Message -----
>> >
>> >         From:
>> >         Jonas Gauffin
>> >
>> >         To:
>> >         freeswitch-users at lists.freeswitch.org
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >         Sent:
>> >         Tuesday, February 19, 2008 10:35 AM
>> >
>> >         Subject:
>> >         Re: [Freeswitch-users] Spidermonkey ODBC
>> >
>> >
>> >
>> > I did that code a couple of months ago.
>> > The function
>> >         was added since connections are closed if they are idle  
>> too long, and
>> >         they were not reconnected again if that happened.
>> >
>> >
>> >
>> >         On Feb 19, 2008 11:22 AM, David Revill <davidrevill at datarun.co.uk 
>> >
>> >         wrote:
>> >
>> >
>> >
>> >           The problem is in switch_odbc.c function
>> >           db_is_up. It assumes that the variable is_firebird is  
>> true, but the
>> >           setting of this variable assumes that the Firebird  
>> driver name has
>> >           'FIREBIRD', 'FB64' or 'FB32' in it.
>> >
>> >
>> >
>> >           I commented out  the code in
>> >           db_is_up and just returned a true value, as on closer  
>> inspection
>> >           could not see the point of this function.
>> >
>> >
>> >
>> >           David Revill
>> >
>> >
>> >
>> >             -----
>> >             Original Message -----
>> >
>> >             From:
>> >             David Revill
>> >
>> >             To:
>> >             freeswitch-users at lists.freeswitch.org
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >             Sent:
>> >             Tuesday, February 19, 2008 8:58 AM
>> >
>> >             Subject:
>> >             Re: [Freeswitch-users] Spidermonkey ODBC
>> >
>> >
>> >
>> >
>> >             I spotted this error a few months ago,
>> >             and to my shame did not let everyone know.  I have  
>> since
>> >             archived the project so cannot point you to the  
>> actual code.
>> >             However, the problem is  that it assumes the name of  
>> the
>> >             Firebird Driver (FB64?)  to set a boolean, so that it  
>> handle
>> >             the connection test differently.
>> >
>> >
>> >
>> >             When looking at the actual code, I
>> >             actually felt that the connection test was redundant,  
>> as all it did
>> >             was a select from a system table. This meant it was  
>> doing two
>> >             queries for everyone required. (One to see if it  
>> could do a query,
>> >             and then one to do it). I therefore commented the  
>> connection test
>> >             function out.
>> >
>> >
>> >
>> >             regards
>> >
>> >
>> >
>> >             David Revill
>> >
>> >
>> >               -----
>> >               Original Message -----
>> >
>> >               From:
>> >               Steven Brown
>> >
>> >               To:
>> >               freeswitch-users at lists.freeswitch.org
>> >
>> >
>> >               Sent:
>> >               Monday, February 18, 2008 11:34 PM
>> >
>> >               Subject:
>> >               [Freeswitch-users] Spidermonkey ODBC
>> >
>> >
>> >
>> >
>> >               Hi,
>> >
>> >
>> >
>> >               I'm experimenting with
>> >               spidermonkey for JavaScript call control, the  
>> basics seem
>> >               fine and I'm now trying to connect to an existing  
>> Firebird
>> >               database, the Firebird odbc lib is installed ok as  
>> is unixODBC and
>> >               I can confirm this and access the db no problem  
>> with isql,
>> >               something strange happens though when I connect in  
>> spidermonkey,
>> >               basically the odbc connection is made successfully,  
>> but then as
>> >               soon as I call either exec or query the odbc  
>> connection starts to
>> >               drop and re-connect continuously,
>> >
>> >
>> >
>> >               the isql output is below
>> >
>> >
>> >
>> >
>> >               isql -v
>> >               test
>> > +---------------------------------------+
>> > |
>> >               Connected!
>> >               |
>> > |
>> >               |
>> > |
>> >               sql-statement
>> >               |
>> > | help
>> >               [tablename]
>> >               |
>> > |
>> >               quit
>> >               |
>> > |
>> >               |
>> > +---------------------------------------+
>> > SQL> select
>> >               first 1 * from
>> >               pool_phones
>> > +---------------------+------------+
>> > |
>> >               GSMNO
>> >               | ORGNO
>> >               |
>> > +---------------------+------------+
>> > |
>> >               0712345678         |
>> >               1
>> >               |
>> > +---------------------+------------+
>> > SQLRowCount returns
>> >               1
>> > 1 rows fetched
>> > SQL>
>> >
>> >
>> >               however the following test code
>> >               calling the same query
>> >
>> >
>> >
>> >               use("ODBC");
>> >
>> >               var db = new
>> >               ODBC("test","SYSDBA","masterkey");
>> > db.connect();
>> > db.query("select
>> >               first 1 *  from pool_phones");
>> >
>> >               db.nextRow();
>> >
>> >               row =
>> >               db.getData();
>> > console_log("INFO","HELLO " +  row["GSMNO"]
>> >                + "\n");
>> >
>> >               exit();
>> >
>> >
>> >
>> >               gives the following output and then
>> >               just loops disconnecting and reconnecting until I  
>> shutdown
>> >               freeswitch
>> >
>> >
>> >               2008-02-18 23:26:03 [DEBUG]
>> >               switch_core_state_machine.c:144  
>> switch_core_standard_on_execute()
>> >               sofia/default/1000 at 192.168.0.7:5060 Execute
>> >               javascript(/usr/scripts/test1.js)
>> > 2008-02-18 23:26:03 [DEBUG]
>> >               mod_spidermonkey.c:3150 js_api_use() Loading ODBC
>> > 2008-02-18
>> >               23:26:03 [DEBUG] switch_odbc.c:145  
>> switch_odbc_handle_connect()
>> >               Connecting test
>> > 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:174
>> >               switch_odbc_handle_connect() Connected to [test]
>> > 2008-02-18
>> >               23:26:03 [DEBUG] switch_odbc.c:95  
>> switch_odbc_handle_disconnect()
>> >               Disconnected 0 from [test]
>> > 2008-02-18 23:26:03 [DEBUG]
>> >               switch_odbc.c:142 switch_odbc_handle_connect() Re- 
>> connecting
>> >               test
>> > 2008-02-18 23:26:03 [DEBUG] switch_odbc.c:145
>> >               switch_odbc_handle_connect() Connecting test
>> > 2008-02-18
>> >               23:26:03 [DEBUG] switch_odbc.c:174  
>> switch_odbc_handle_connect()
>> >               Connected to [test]
>> > 2008-02-18 23:26:03 [CRIT]
>> >               switch_odbc.c:234 db_is_up() The sql server is not  
>> responding for
>> >               DSN test []
>> > 2008-02-18 23:26:03 [INFO] switch_odbc.c:239
>> >               db_is_up() The connection has been re-established
>> >
>> >               ...
>> >
>> >               Any ideas much appreciated
>> >
>> >               Thanks
>> >
>> >               Steve
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> >               mailing list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> >             mailing list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> >           mailing list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> >         mailing list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> >       mailing list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> >     mailing list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> >
>> > -----Inline Attachment
>> >   Follows-----
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> >   mailing list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >   Be a better friend, newshound, and know-it-all with Yahoo!  
>> Mobile. Try
>> >   it now.
>> >
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> >   mailing
>> >   list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> > -----Inline Attachment Follows-----
>> >
>> > _______________________________________________
>> > Freeswitch-users
>> > mailing
>> > list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >        
>> ____________________________________________________________________________________
>> > Looking for last minute shopping deals?
>> > Find them fast with Yahoo! Search.  http://tools.search.yahoo.com/newsearch/category.php?category=shopping
>> > _______________________________________________
>> > Freeswitch-users mailing list
>> > Freeswitch-users at lists.freeswitch.org
>> > http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> > http://www.freeswitch.org
>>
>>
>> _______________________________________________
>> Freeswitch-users mailing list
>> Freeswitch-users at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> http://www.freeswitch.org
>>
>> _______________________________________________
>> Freeswitch-users mailing list
>> Freeswitch-users at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> http://www.freeswitch.org
>
>
> _______________________________________________
> Freeswitch-users mailing list
> Freeswitch-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
> _______________________________________________
> Freeswitch-users mailing list
> Freeswitch-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org




More information about the Freeswitch-users mailing list