File tree Expand file tree Collapse file tree 3 files changed +73
-3
lines changed Expand file tree Collapse file tree 3 files changed +73
-3
lines changed Original file line number Diff line number Diff line change @@ -486,13 +486,16 @@ check_valid_extension_name(const char *extensionname)
486486 * Check for alphanumeric character in extension name for now. Although
487487 * this does prevent some naming schemes, it's a more straight forward
488488 * prevention for preventing certain injection attacks due to the way the
489- * way we rely on functions currently. Allow the '_' or '-' character to
490- * provide a nice separator if desired.
489+ * way we rely on functions currently. Allow the '_', '-', or '@'
490+ * character to provide a nice separator if desired.
491491 */
492492
493493 while (extensionname [idx ] != '\0' )
494494 {
495- if (!isalnum (extensionname [idx ]) && extensionname [idx ] != '_' && extensionname [idx ] != '-' )
495+ if (!isalnum (extensionname [idx ]) &&
496+ extensionname [idx ] != '_' &&
497+ extensionname [idx ] != '-' &&
498+ extensionname [idx ] != '@' )
496499 ereport (ERROR ,
497500 (errcode (ERRCODE_INVALID_PARAMETER_VALUE ),
498501 errmsg ("invalid extension name: \"%s\"" , extensionname ),
Original file line number Diff line number Diff line change @@ -815,6 +815,51 @@ SELECT pgtle.available_extension_versions();
815815------------------------------
816816(0 rows)
817817
818+ -- install extension with '@' symbol in name
819+ SELECT pgtle.install_extension
820+ (
821+ 'foo@bar',
822+ '1.0',
823+ 'Test TLE Functions',
824+ $_pgtle_$
825+ CREATE OR REPLACE FUNCTION at_func()
826+ RETURNS INT AS $$
827+ (
828+ SELECT 42
829+ )$$ LANGUAGE sql;
830+ $_pgtle_$
831+ );
832+ install_extension
833+ -------------------
834+ t
835+ (1 row)
836+
837+ SELECT pgtle.available_extensions();
838+ available_extensions
839+ ------------------------------------
840+ (foo@bar,1.0,"Test TLE Functions")
841+ (1 row)
842+
843+ CREATE EXTENSION "foo@bar";
844+ SELECT extname, extversion from pg_extension where extname='foo@bar';
845+ extname | extversion
846+ ---------+------------
847+ foo@bar | 1.0
848+ (1 row)
849+
850+ SELECT at_func();
851+ at_func
852+ ---------
853+ 42
854+ (1 row)
855+
856+ DROP EXTENSION "foo@bar";
857+ SELECT pgtle.uninstall_extension('foo@bar');
858+ uninstall_extension
859+ ---------------------
860+ t
861+ (1 row)
862+
818863-- Skip TransactionStmts
819864BEGIN;
820865SELECT pgtle.available_extension_versions();
Original file line number Diff line number Diff line change @@ -531,6 +531,28 @@ SELECT pgtle.uninstall_extension('test42');
531531
532532SELECT pgtle .available_extension_versions ();
533533
534+ -- install extension with '@' symbol in name
535+ SELECT pgtle .install_extension
536+ (
537+ ' foo@bar' ,
538+ ' 1.0' ,
539+ ' Test TLE Functions' ,
540+ $_pgtle_$
541+ CREATE OR REPLACE FUNCTION at_func ()
542+ RETURNS INT AS $$
543+ (
544+ SELECT 42
545+ )$$ LANGUAGE sql;
546+ $_pgtle_$
547+ );
548+
549+ SELECT pgtle .available_extensions ();
550+ CREATE EXTENSION " foo@bar" ;
551+ SELECT extname, extversion from pg_extension where extname= ' foo@bar' ;
552+ SELECT at_func();
553+ DROP EXTENSION " foo@bar" ;
554+ SELECT pgtle .uninstall_extension (' foo@bar' );
555+
534556-- Skip TransactionStmts
535557BEGIN ;
536558SELECT pgtle .available_extension_versions ();
You can’t perform that action at this time.
0 commit comments