A veces tienes que concatenar cadenas para hacer sentencias de SQL. Por supuesto, debes ser muy cuidadoso en tales circunstancias. Los nombres de tablas variables son una de esas situaciones.
En este caso, probablemente debas usar una función incorporada como quoteIdentifier
para asegurarte de enfrentar todas las circunstancias necesarias.
También agregaría una restricción a los caracteres permitidos:
if(table_name.match(".*[^a-zA-Z_].*")) throw_big_error();
Sí, eso limita los nombres de las tablas más allá de lo que admite el RDBMS subyacente.
¿Tiene un requisito para admitir nombres de tablas con espacios en ellos? ¿O es aceptable prohibir los caracteres especiales en los nombres de tablas? Si puedes, hazlo.
"Simplemente hazlo bien en lugar de preguntar si hacerlo mal es seguro".
Ya que estás revisando el código, este es el comentario al codificador.