ASE 15.7 ESD#4 Unix Domain Sockets
In the past few days, I have fired up a copy of ASE 15.7ESD#4 to try the new feature Unix Domain Sockets. I found only a few notes about this feature. The CR listing is source of my information. CR 667751 has all of the public information that I have found to date.
Here is the heart of the information.
“master afunix unused //<hostname>/<pipe>”
After many failed attempts, I realized how simple this could be.
The ASE Server creates a socket file at start-up based on the master entry in the interfaces file.
In order for this to work, the ASE dataserver must have write access to a folder.
Hmmm– $SYBASE sounds like a good choice.
I decided I wanted my socket file to be called “ASE.socket” in /sybase/ folder.
Here is an example of the master line that finally worked.
master afunix unused //mytesthost/sybase/ASE.socket
I tested the socket with isql & bcp… Both tools worked without a problem. The feature of the new connection is to reduce the overhead associated with TCP/IP. The results of my bcp inbound testing proved that the network layer was not my source of contention and slowness. I expect that bcp outbound will show better results if I can get past other self-inflicted issues of my machine.
In conclusion, ASE Unix Domain Sockets works without issues when I use the ASE utilities.
Conclusion #2:
This feature is documented in the SDK manuals.
-New Features Bulletin Open Server™ 15.7 and SDK 15.7 for Windows, Linux, and UNIX
–Open Client 15.7 and Open Server 15.7 features in ESD #3
—-UNIX named sockets
Years ago, isql had the ability to attach to the shared memory segment directly if run as the user that started dataserver or as root. I think it was taken out in the transition to v11.0.
Such a feature might be useful for bcp I'm thinking. Serious security / stability issues though.
On a side note, I would love to be able to bcp directly into the data device. hmm.. The database being offline or quiesced of course. It wouldn't take much to write up a (totally unsupported) tool to do so assuming an 'empty' data device.
Here is the syntax to start the unix domain socket with sp_listener
exec sp_listener 'start', 'afunix://mytesthost:/sybase/ASE.socket'