Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorAndrejs Kozlovs <andrejs.kozlovs@zabbix.com>2020-11-06 16:43:56 +0300
committerAndrejs Kozlovs <andrejs.kozlovs@zabbix.com>2021-01-13 18:04:33 +0300
commitd5227f7e35e40671d7f8ee4e5be4355cd0c23c4e (patch)
tree1cb9f34743023b69fbfded142d3ce6081c424da7 /misc
parentd11e920cd7733444e962320ae236df85a5e65f47 (diff)
....I..... [ZBXNEXT-6285] code review rework
Diffstat (limited to 'misc')
-rw-r--r--misc/images/images_oracle_end.txt2
-rw-r--r--misc/images/images_oracle_start.txt79
-rwxr-xr-xmisc/images/png_to_sql.sh18
3 files changed, 50 insertions, 49 deletions
diff --git a/misc/images/images_oracle_end.txt b/misc/images/images_oracle_end.txt
index 6301f37e6d7..c8fe184512a 100644
--- a/misc/images/images_oracle_end.txt
+++ b/misc/images/images_oracle_end.txt
@@ -1,3 +1,3 @@
END;
/
-DROP FUNCTION base64decode;
+DROP FUNCTION base64_decode;
diff --git a/misc/images/images_oracle_start.txt b/misc/images/images_oracle_start.txt
index 58815b8ee20..1c4308a242b 100644
--- a/misc/images/images_oracle_start.txt
+++ b/misc/images/images_oracle_start.txt
@@ -1,48 +1,49 @@
-CREATE OR REPLACE FUNCTION base64decode(p_clob CLOB) RETURN BLOB
- IS
- C_CHUNK_SIZE CONSTANT INTEGER := 12000; -- should be a multiple of 4
- C_NON_BASE64_SYM_PATTERN CONSTANT VARCHAR2(20) := '[^A-Za-z0-9+/]';
- l_chunk_buf VARCHAR2(12000);
- l_chunk_b64_buf RAW(9000);
- l_chunk_offset INTEGER := 1;
- l_chunk_size INTEGER;
- l_blob BLOB;
+-- this function is taken from https://stackoverflow.com/questions/19539408/error-when-decoding-base-64-to-blob
+CREATE OR REPLACE FUNCTION base64_decode(p_content CLOB) RETURN BLOB
+ IS
+ C_CHUNK_SIZE CONSTANT INTEGER := 12000; -- should be a multiple of 4
+ C_NON_BASE64_SYM_PATTERN CONSTANT VARCHAR2(20) := '[^A-Za-z0-9+/]';
+ l_chunk_buf VARCHAR2(12000);
+ l_chunk_b64_buf RAW(9000);
+ l_chunk_offset INTEGER := 1;
+ l_chunk_size INTEGER;
+ l_res BLOB;
- FUNCTION get_next_full_base64_chunk(l_data CLOB, p_cur_pos IN OUT INTEGER, p_desired_size INTEGER, p_cur_size IN OUT INTEGER) RETURN VARCHAR2 IS
- l_res VARCHAR2(12000);
- l_tail_desired_size INTEGER;
- BEGIN
- l_res := dbms_lob.substr(l_data, p_desired_size, p_cur_pos);
- p_cur_pos := p_cur_pos + p_desired_size;
- IF l_res IS NULL THEN
- RETURN NULL;
- END IF;
+ FUNCTION get_next_full_base64_chunk(l_data CLOB, p_cur_pos IN OUT INTEGER, p_desired_size INTEGER, p_cur_size IN OUT INTEGER) RETURN VARCHAR2 IS
+ l_res VARCHAR2(12000);
+ l_tail_desired_size INTEGER;
+ BEGIN
+ l_res := dbms_lob.substr(l_data, p_desired_size, p_cur_pos);
+ p_cur_pos := p_cur_pos + p_desired_size;
+ IF l_res IS NULL THEN
+ RETURN NULL;
+ END IF;
- l_res := regexp_replace(l_res, C_NON_BASE64_SYM_PATTERN, '');
- p_cur_size := p_cur_size + length(l_res);
+ l_res := regexp_replace(l_res, C_NON_BASE64_SYM_PATTERN, '');
+ p_cur_size := p_cur_size + length(l_res);
- l_tail_desired_size := 4 - mod(p_cur_size, 4);
- IF l_tail_desired_size = 4 THEN
- RETURN l_res;
- ELSE
- RETURN l_res || get_next_full_base64_chunk(l_data, p_cur_pos, l_tail_desired_size, p_cur_size);
- END IF;
- END;
+ l_tail_desired_size := 4 - mod(p_cur_size, 4);
+ IF l_tail_desired_size = 4 THEN
+ RETURN l_res;
+ ELSE
+ RETURN l_res || get_next_full_base64_chunk(l_data, p_cur_pos, l_tail_desired_size, p_cur_size);
+ END IF;
+ END;
- BEGIN
- dbms_lob.createtemporary(l_blob, false);
+ BEGIN
+ dbms_lob.createtemporary(l_res, false);
- WHILE true
- LOOP
- l_chunk_size := 0;
- l_chunk_buf := get_next_full_base64_chunk(p_clob, l_chunk_offset, C_CHUNK_SIZE, l_chunk_size);
- EXIT WHEN l_chunk_buf IS NULL;
- l_chunk_b64_buf := utl_encode.base64_decode(utl_raw.cast_to_raw(l_chunk_buf));
- dbms_lob.writeappend(l_blob, utl_raw.length(l_chunk_b64_buf), l_chunk_b64_buf);
- END LOOP;
+ WHILE true
+ LOOP
+ l_chunk_size := 0;
+ l_chunk_buf := get_next_full_base64_chunk(p_content, l_chunk_offset, C_CHUNK_SIZE, l_chunk_size);
+ EXIT WHEN l_chunk_buf IS NULL;
+ l_chunk_b64_buf := utl_encode.base64_decode(utl_raw.cast_to_raw(l_chunk_buf));
+ dbms_lob.writeappend(l_res, utl_raw.length(l_chunk_b64_buf), l_chunk_b64_buf);
+ END LOOP;
- RETURN l_blob;
- END;
+ RETURN l_res;
+ END;
/
DECLARE
l_clob CLOB;
diff --git a/misc/images/png_to_sql.sh b/misc/images/png_to_sql.sh
index ddaa239a91f..ab2d53e8873 100755
--- a/misc/images/png_to_sql.sh
+++ b/misc/images/png_to_sql.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# A script to generate SQL from PNG images
-# depends on hexdump
+# depends on hexdump and base64
scriptdir="$(dirname $0)"
pngdir="${1:-png_modern}"
@@ -13,9 +13,9 @@ imagefile_pgsql="$sqlbasedir/postgresql/$imagefile"
imagefile_sqlite3="$sqlbasedir/sqlite3/$imagefile"
imagefile_oracle="$sqlbasedir/oracle/$imagefile"
-oracle_sring_max=2048
+oracle_string_max=2048
oracle_line_max=15
-base64tmp=tmp_b64
+oracle_base64tmp=tmp_b64
for imagefile in "$imagefile_mysql" "$imagefile_pgsql" "$imagefile_sqlite3" "$imagefile_oracle"; do
[[ -s "$imagefile" ]] && {
@@ -36,22 +36,22 @@ for imagefile in $pngdir/*.png; do
((imagesdone++))
imagename="$(basename "${imagefile%.png}")"
image_data=$(hexdump -ve '"" 1/1 "%02X"' "$imagefile")
- base64 -w$oracle_sring_max "$imagefile" > $base64tmp
- split -l$oracle_line_max $base64tmp $base64tmp
- rm -rf $base64tmp
# ----- MySQL
echo "INSERT INTO \`images\` (\`imageid\`,\`imagetype\`,\`name\`,\`image\`) VALUES ($imagesdone,1,'$imagename',0x$image_data);" >> "$imagefile_mysql"
# ----- PostgreSQL
echo "INSERT INTO images (imageid,imagetype,name,image) VALUES ($imagesdone,1,'$imagename',decode('$image_data','hex'));" >> "$imagefile_pgsql"
# ----- Oracle
+ base64 -w$oracle_string_max "$imagefile" > $oracle_base64tmp
+ split -l$oracle_line_max $oracle_base64tmp $oracle_base64tmp
+ rm -f $oracle_base64tmp
echo -e "\tl_clob := EMPTY_CLOB();" >> "$imagefile_oracle"
- for oracle_imagefile in $base64tmp*; do
- image_data_oracle=$(cat "$oracle_imagefile")
+ for oracle_imagefile in $oracle_base64tmp*; do
+ image_data_oracle=$(grep "" "$oracle_imagefile")
echo -e "\tl_clob := l_clob || '$image_data_oracle';" >> "$imagefile_oracle"
rm -rf $oracle_imagefile
done
- echo -e "\tINSERT INTO images VALUES ($imagesdone,1,'$imagename',base64decode(l_clob));" >> "$imagefile_oracle"
+ echo -e "\tINSERT INTO images VALUES ($imagesdone,1,'$imagename',base64_decode(l_clob));" >> "$imagefile_oracle"
# ----- SQLite
echo "INSERT INTO images (imageid,imagetype,name,image) VALUES ($imagesdone,1,'$imagename','$image_data');" >> "$imagefile_sqlite3"