VLMatch library compilation for Oracle#
This section describes VLMatch library building and new function appliance to the Oracle database.
For VLMatch UDx function compilation one needs to:
-
Install required environment, see requirements:
-
Install the gcc/g++ 4.8 or higher
yum -y install gcc-c++.x86_64
- Change
SDK_HOME
variable - oracle sdk root (default is$ORACLE_HOME/bin
, check$ORACLE_HOME
environment variable is set) in the makefile. -
Go to the directory and run the "make.sh" file:
cd /var/lib/luna/current/extras/VLMatch/oracle/
chmod +x make.sh
./make.sh
-
Define the library and the function inside the database (from database console):
CREATE OR REPLACE LIBRARY VLMatchSource AS '$ORACLE_HOME/bin/VLMatchSource.so';
CREATE OR REPLACE FUNCTION VLMatch(descriptorFst IN RAW, descriptorSnd IN RAW, length IN BINARY_INTEGER)
RETURN BINARY_FLOAT
AS
LANGUAGE C
LIBRARY VLMatchSource
NAME "VLMatch"
PARAMETERS (descriptorFst BY REFERENCE, descriptorSnd BY REFERENCE, length UNSIGNED SHORT, RETURN FLOAT);
Test function within call (from database console):
SELECT VLMatch(HEXTORAW('1234567890123456789012345678901234567890123456789012345678901234'), HEXTORAW('0123456789012345678901234567890123456789012345678901234567890123'), 32) FROM DUAL;
The result should be equal to "0.4765625".