Quotes a string so that it can be safely used as a table or column name,
        even if it is a reserved word of the platform. This also detects identifier
        chains separated by dot and quotes them independently.

        :param string: The identifier name to be quoted.
        :type string: str

        :return: The quoted identifier string.
        :rtype: str

def quote_identifier(self, string):
        """
        Quotes a string so that it can be safely used as a table or column name,
        even if it is a reserved word of the platform. This also detects identifier
        chains separated by dot and quotes them independently.

        :param string: The identifier name to be quoted.
        :type string: str

        :return: The quoted identifier string.
        :rtype: str
        """
        if "." in string:
            parts = list(map(self.quote_single_identifier, string.split(".")))

            return ".".join(parts)

        return self.quote_single_identifier(string)