async function getAthenaSchemaWithGlue(connection) {
  configureAWS(connection);

  const glue = new AWS.Glue();
  const databases = await traverseAllPages(
    glue.getDatabases(),
    (r) => r.DatabaseList || []
  );

  let tables = [];
  for (const database of databases) {
    let include = true;
    if (connection.athenaDatabaseInclusionPatterns) {
      include = false;
      for (const exclusionPattern of connection.athenaDatabaseInclusionPatterns.split(
        ','
      )) {
        if (RegExp(exclusionPattern).test(database.Name)) {
          include = true;
        }
      }
    }
    if (include) {
      tables = tables.concat(
        traverseAllPages(
          glue.getTables({ DatabaseName: database.Name }),
          (r) => r.TableList || []
        )
      );
    }
  }

  tables = (await Promise.all(tables)).flat();
  const schema = [];
  for (let table of tables) {
    for (const column of table['StorageDescriptor']['Columns']) {
      schema.push({
        table_schema: table['DatabaseName'],
        table_name: table['Name'],
        column_name: column['Name'],
        data_type: column['Type'],
      });
    }
  }

  return { rows: schema };
}
Load Athena schema with Glue.
@param {object} connection