Skip to content

Commit f7424b5

Browse files
authored
Merge pull request #4390 from mathesar-foundation/rm_cast_func_p4
Remove redundant cast_to_boolean functions
2 parents 0889dcb + 86f410b commit f7424b5

File tree

1 file changed

+44
-135
lines changed

1 file changed

+44
-135
lines changed

db/sql/45_msar_type_casting.sql

Lines changed: 44 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -248,151 +248,60 @@ CASTING FUNCTIONS
248248
*/
249249

250250
-- msar.cast_to_boolean
251-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(boolean)
252-
RETURNS boolean
253-
AS $$
254-
255-
BEGIN
256-
RETURN $1::boolean;
257-
END;
258-
259-
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
260-
261-
262-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(smallint)
263-
RETURNS boolean
264-
AS $$
265-
BEGIN
266-
IF $1<>0 AND $1<>1 THEN
267-
RAISE EXCEPTION '% is not a boolean', $1; END IF;
268-
RETURN $1<>0;
269-
END;
270-
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
271-
272-
273-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(real)
274-
RETURNS boolean
275-
AS $$
276-
BEGIN
277-
IF $1<>0 AND $1<>1 THEN
278-
RAISE EXCEPTION '% is not a boolean', $1; END IF;
279-
RETURN $1<>0;
280-
END;
281-
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
282-
283-
284-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(bigint)
285-
RETURNS boolean
286-
AS $$
287-
BEGIN
288-
IF $1<>0 AND $1<>1 THEN
289-
RAISE EXCEPTION '% is not a boolean', $1; END IF;
290-
RETURN $1<>0;
291-
END;
292-
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
293-
294-
295-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(double precision)
296-
RETURNS boolean
297-
AS $$
298-
299-
BEGIN
300-
IF $1<>0 AND $1<>1 THEN
301-
RAISE EXCEPTION '% is not a boolean', $1; END IF;
302-
RETURN $1<>0;
303-
END;
304-
305-
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
306-
251+
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(boolean) RETURNS boolean AS $$
252+
SELECT $1::boolean;
253+
$$ LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT;
307254

308-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(numeric)
309-
RETURNS boolean
310-
AS $$
311-
BEGIN
312-
IF $1<>0 AND $1<>1 THEN
313-
RAISE EXCEPTION '% is not a boolean', $1; END IF;
314-
RETURN $1<>0;
315-
END;
255+
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(real) RETURNS boolean AS $$
256+
BEGIN
257+
IF $1<>0 AND $1<>1 THEN
258+
RAISE EXCEPTION '% is not a boolean', $1; END IF;
259+
RETURN $1<>0;
260+
END;
316261
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
317262

318-
319-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(integer)
320-
RETURNS boolean
321-
AS $$
322-
BEGIN
323-
IF $1<>0 AND $1<>1 THEN
324-
RAISE EXCEPTION '% is not a boolean', $1; END IF;
325-
RETURN $1<>0;
326-
END;
263+
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(bigint) RETURNS boolean AS $$
264+
BEGIN
265+
IF $1<>0 AND $1<>1 THEN
266+
RAISE EXCEPTION '% is not a boolean', $1; END IF;
267+
RETURN $1<>0;
268+
END;
327269
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
328270

329-
330-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(character varying)
331-
RETURNS boolean
332-
AS $$
333-
DECLARE
334-
istrue boolean;
335-
BEGIN
336-
SELECT
337-
$1='1' OR lower($1) = 'on'
338-
OR lower($1)='t' OR lower($1)='true'
339-
OR lower($1)='y' OR lower($1)='yes'
340-
INTO istrue;
341-
IF istrue
342-
OR $1='0' OR lower($1) = 'off'
343-
OR lower($1)='f' OR lower($1)='false'
344-
OR lower($1)='n' OR lower($1)='no'
345-
THEN
346-
RETURN istrue;
347-
END IF;
348-
RAISE EXCEPTION '% is not a boolean', $1;
349-
END;
271+
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(double precision) RETURNS boolean AS $$
272+
BEGIN
273+
IF $1<>0 AND $1<>1 THEN
274+
RAISE EXCEPTION '% is not a boolean', $1; END IF;
275+
RETURN $1<>0;
276+
END;
350277
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
351278

352-
353-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(text)
354-
RETURNS boolean
355-
AS $$
356-
DECLARE
357-
istrue boolean;
358-
BEGIN
359-
SELECT
360-
$1='1' OR lower($1) = 'on'
361-
OR lower($1)='t' OR lower($1)='true'
362-
OR lower($1)='y' OR lower($1)='yes'
363-
INTO istrue;
364-
IF istrue
365-
OR $1='0' OR lower($1) = 'off'
366-
OR lower($1)='f' OR lower($1)='false'
367-
OR lower($1)='n' OR lower($1)='no'
368-
THEN
369-
RETURN istrue;
370-
END IF;
371-
RAISE EXCEPTION '% is not a boolean', $1;
372-
END;
279+
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(numeric) RETURNS boolean AS $$
280+
BEGIN
281+
IF $1<>0 AND $1<>1 THEN
282+
RAISE EXCEPTION '% is not a boolean', $1; END IF;
283+
RETURN $1<>0;
284+
END;
373285
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
374286

375-
376-
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(character)
377-
RETURNS boolean
378-
AS $$
379-
DECLARE
287+
CREATE OR REPLACE FUNCTION msar.cast_to_boolean(text) RETURNS boolean AS $$
288+
DECLARE
380289
istrue boolean;
381-
BEGIN
382-
SELECT
383-
$1='1' OR lower($1) = 'on'
384-
OR lower($1)='t' OR lower($1)='true'
385-
OR lower($1)='y' OR lower($1)='yes'
386-
INTO istrue;
387-
IF istrue
388-
OR $1='0' OR lower($1) = 'off'
389-
OR lower($1)='f' OR lower($1)='false'
390-
OR lower($1)='n' OR lower($1)='no'
391-
THEN
392-
RETURN istrue;
393-
END IF;
394-
RAISE EXCEPTION '% is not a boolean', $1;
395-
END;
290+
BEGIN
291+
SELECT
292+
$1='1' OR lower($1) = 'on'
293+
OR lower($1)='t' OR lower($1)='true'
294+
OR lower($1)='y' OR lower($1)='yes'
295+
INTO istrue;
296+
IF istrue
297+
OR $1='0' OR lower($1) = 'off'
298+
OR lower($1)='f' OR lower($1)='false'
299+
OR lower($1)='n' OR lower($1)='no'
300+
THEN
301+
RETURN istrue;
302+
END IF;
303+
RAISE EXCEPTION '% is not a boolean', $1;
304+
END;
396305
$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT;
397306

398307

0 commit comments

Comments
 (0)