Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Xuefu Zhang
file 43 lines (32 sloc) 2.074 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
set hive.fetch.task.conversion=more;

DESCRIBE FUNCTION translate;
DESCRIBE FUNCTION EXTENDED translate;

-- Create some tables to serve some input data
CREATE TABLE table_input(input STRING);
CREATE TABLE table_translate(input_string STRING, from_string STRING, to_string STRING);

FROM src INSERT OVERWRITE TABLE table_input SELECT 'abcd' WHERE src.key = 86;
FROM src INSERT OVERWRITE TABLE table_translate SELECT 'abcd', 'ahd', '12' WHERE src.key = 86;

-- Run some queries on constant input parameters
SELECT translate('abcd', 'ab', '12'),
        translate('abcd', 'abc', '12') FROM src tablesample (1 rows);

-- Run some queries where first parameter being a table column while the other two being constants
SELECT translate(table_input.input, 'ab', '12'),
       translate(table_input.input, 'abc', '12') FROM table_input tablesample (1 rows);

-- Run some queries where all parameters are coming from table columns
SELECT translate(input_string, from_string, to_string) FROM table_translate tablesample (1 rows);

-- Run some queries where some parameters are NULL
SELECT translate(NULL, 'ab', '12'),
       translate('abcd', NULL, '12'),
       translate('abcd', 'ab', NULL),
       translate(NULL, NULL, NULL) FROM src tablesample (1 rows);

-- Run some queries where the same character appears several times in the from string (2nd argument) of the UDF
SELECT translate('abcd', 'aba', '123'),
       translate('abcd', 'aba', '12') FROM src tablesample (1 rows);

-- Run some queries for the ignorant case when the 3rd parameter has more characters than the second one
SELECT translate('abcd', 'abc', '1234') FROM src tablesample (1 rows);

-- Test proper function over UTF-8 characters
SELECT translate('Àbcd', 'À', 'Ã') FROM src tablesample (1 rows);

-- Run some queries where the arguments are not strings but chars and varchars
SELECT translate(CAST('abcd' AS CHAR(5)), CAST('aba' AS VARCHAR(5)), CAST('123' AS CHAR(5))),
       translate(CAST('abcd' AS VARCHAR(9)), CAST('aba' AS CHAR(9)), CAST('12' AS VARCHAR(9)))
       FROM src tablesample (1 rows);
Something went wrong with that request. Please try again.