code: public boolean createSqlTable (Connection connection, String namespace, boolean makeIdSerial, String[] primaryKeyFields) {
          // Optionally join namespace and name to create full table name if namespace is not null (i.e., table object is
          // a spec table).
          String tableName = namespace != null ? String.join(".", namespace, name) : name;
          String fieldDeclarations = Arrays.stream(fields)
                  .map(Field::getSqlDeclaration)
                  .collect(Collectors.joining(", "));
          if (primaryKeyFields != null) {
              fieldDeclarations += String.format(", primary key (%s)", String.join(", ", primaryKeyFields));
          }
          String dropSql = String.format("drop table if exists %s", tableName);
          // Adding the unlogged keyword gives about 12 percent speedup on loading, but is non-standard.
          String idFieldType = makeIdSerial ? "serial" : "bigint";
          String createSql = String.format("create table %s (id %s not null, %s)", tableName, idFieldType, fieldDeclarations);
          try {
              Statement statement = connection.createStatement();
              LOG.info(dropSql);
              statement.execute(dropSql);
              LOG.info(createSql);
              return statement.execute(createSql);
          } catch (Exception ex) {
              throw new StorageException(ex);
          }
      }
docs: Create an SQL table with all the fields specified by this table object,
  plus an integer CSV line number field in the first position.