<commit_before>export default function(prefix,columns,suffix){

  if(prefix && prefix[0] !== "__sql")
    throw new Error("expect prefix to be a sql``")

  if(suffix && suffix[0] !== "__sql")
    throw new Error("expect prefix to be a sql``")

  if(!suffix)
    suffix = sql``

  const definedColumns = Object.keys(columns).reduce((memo,key) => {
    if(columns[key] === undefined)
      return memo

    return [...memo, [key, columns[key]]]
  }, [])

  if(definedColumns.length === 0)
    return null

  return [
    "__sql",
    prefix,
    definedColumns.map(([column,value], idx, arr) => {
      return [
        "__sql",
        column,
        " = ",
        {__param: value},
        ...(idx < arr.length - 1 ? [", "] : []),
      ]
    }),
    suffix
  ]
}<commit_msg>fix error message<commit_after>export default function(prefix,columns,suffix){

  if(prefix && prefix[0] !== "__sql")
    throw new Error("expect prefix to be a sql``")

  if(suffix && suffix[0] !== "__sql")
    throw new Error("expect suffix to be a sql``")

  if(!suffix)
    suffix = sql``

  const definedColumns = Object.keys(columns).reduce((memo,key) => {
    if(columns[key] === undefined)
      return memo

    return [...memo, [key, columns[key]]]
  }, [])

  if(definedColumns.length === 0)
    return null

  return [
    "__sql",
    prefix,
    definedColumns.map(([column,value], idx, arr) => {
      return [
        "__sql",
        column,
        " = ",
        {__param: value},
        ...(idx < arr.length - 1 ? [", "] : []),
      ]
    }),
    suffix
  ]
}
{'fraction_non_alphanumeric': 0.18356867779204109, 'fraction_numerical': 0.005134788189987163, 'mean_word_length': 2.456762749445676, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1622192', 'n_tokens_mistral': 521, 'n_tokens_neox': 505, 'n_words': 118}