<h3 dir="auto">Describe the bug</h3>
<p dir="auto">TypeError is raised when running a query that joins two tables and has a with_entities() clause, if the with_entities contains a column that is of type sqlalchemy_utils.JSONType. That comes from the SQLAlchemy-Utils library.</p>
<p dir="auto">I don't think this is a bug in SQLAlchemy-Utils since it worked in previous versions of SQLAlchemy? I could be wrong though, maybe it's a latent bug that some change in SQLAlchemy 1.4.19 has only now exposed.</p>
<p dir="auto">This worked in SQLAlchemy 1.4.18, error started with SQLAlchemy 1.4.19 and persists in all versions above that.</p>
<p dir="auto">I found that it works in 1.4.18 because <code class="notranslate">self._unique_filter_state</code> is None in call to <code class="notranslate">ResultInternal._iterator_getter()</code> in sqlalchemy/engine/result.py. In versions greater than that, <code class="notranslate">self._unique_filter_state</code> is set to a 2-tuple with value <code class="notranslate">(set(), None)</code>. A different code path is walked down when it's not null, which is what raises the error:<br>
</p><div class="Box Box--condensed my-2">
  <div class="Box-header f6">
    <p class="mb-0 text-bold">
      <a href="https://github.com/sqlalchemy/sqlalchemy/blob/680baea6b83c497e862f3f0ade28e11940cfd895/lib/sqlalchemy/engine/result.py#L364">sqlalchemy/lib/sqlalchemy/engine/result.py</a>
    </p>
    <p class="mb-0 color-fg-muted">
         Line 364
      in
      <a data-pjax="true" class="commit-tease-sha" href="/sqlalchemy/sqlalchemy/commit/680baea6b83c497e862f3f0ade28e11940cfd895">680baea</a>
    </p>
  </div>
  <div itemprop="text" class="Box-body p-0 blob-wrapper blob-wrapper-embedded data">
    <table class="highlight tab-size mb-0 js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">

        <tbody><tr class="border-0">
          <td id="L364" class="blob-num border-0 px-3 py-0 color-bg-default" data-line-number="364"></td>
          <td id="LC364" class="blob-code border-0 px-3 py-0 color-bg-default blob-code-inner js-file-line"> <span class="pl-k">if</span> <span class="pl-s1">self</span>.<span class="pl-s1">_unique_filter_state</span>: </td>
        </tr>
    </tbody></table>
  </div>
</div>
<p></p>
<h3 dir="auto">To Reproduce</h3>
<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="&quot;&quot;&quot;
pip install SQLAlchemy-Utils==0.37.8

pip install SQLAlchemy==1.4.23

-- code below works on SQLAlchemy==1.4.18. fails on 1.4.19. so it was introduced with 1.4.19

In [2]: print(sys.version, sys.platform)
3.6.9 (default, Apr 20 2021, 10:15:16) [GCC 9.3.0] linux
&quot;&quot;&quot;


import sqlalchemy_utils
from sqlalchemy import Column, ForeignKey, Integer, JSON, create_engine
from sqlalchemy.orm import declarative_base, relationship, Session

Base = declarative_base()


class AAA(Base):
    __tablename__ = 'aaa'
    id = Column(Integer, primary_key=True)
    json_column = Column(sqlalchemy_utils.JSONType, nullable=False)


class BBB(Base):
    __tablename__ = 'bbb'
    id = Column(Integer, primary_key=True)
    aaa_id = Column(Integer, ForeignKey('aaa.id'), nullable=True)
    parent = relationship('AAA', backref='children')


class CCC(Base):
    __tablename__ = 'ccc'
    id = Column(Integer, primary_key=True)
    json_column = Column(JSON, nullable=False)


class DDD(Base):
    __tablename__ = 'ddd'
    id = Column(Integer, primary_key=True)
    ccc_id = Column(Integer, ForeignKey('ccc.id'), nullable=True)
    parent = relationship('CCC', backref='children')


def main():
    eng = create_engine('postgresql://postgres@localhost/mcve', echo=False)
    Base.metadata.drop_all(eng)
    Base.metadata.create_all(eng)
    db_session = Session(eng)

    db_session.add(AAA(id=13, json_column=[1, 2, 3]))
    db_session.add(BBB(id=333, aaa_id=13))

    db_session.add(CCC(id=13, json_column=[1, 2, 3]))
    db_session.add(DDD(id=333, ccc_id=13))
    db_session.commit()

    print('\nthis works')
    query = db_session.query(AAA).with_entities(AAA.id, AAA.json_column)
    for (parent_id, json_column) in query:
        print(parent_id, json_column)

    print('\nthis works also')
    query = db_session.query(AAA).join(BBB).with_entities(AAA.id)
    for (parent_id,) in query:
        print(parent_id)

    print('\nthis works also. using the JSON type instead of sqlalchemy_utils.JSONType')
    query = db_session.query(CCC).join(DDD).with_entities(CCC.id, CCC.json_column)
    for (parent_id, json_column) in query:
        print(parent_id, json_column)

    print('\nbut this fails with TypeError: unhashable type: list. '
          'Problem comes from having AAA.json_column in the with_entities() clause, then iterating over the query:')
    query = db_session.query(AAA).join(BBB).with_entities(AAA.id, AAA.json_column)
    for (parent_id, json_column) in query:
        print(parent_id, json_column)


if __name__ == '__main__':
    main()"><pre class="notranslate"><span class="pl-s">"""</span>
<span class="pl-s">pip install SQLAlchemy-Utils==0.37.8</span>
<span class="pl-s"></span>
<span class="pl-s">pip install SQLAlchemy==1.4.23</span>
<span class="pl-s"></span>
<span class="pl-s">-- code below works on SQLAlchemy==1.4.18. fails on 1.4.19. so it was introduced with 1.4.19</span>
<span class="pl-s"></span>
<span class="pl-s">In [2]: print(sys.version, sys.platform)</span>
<span class="pl-s">3.6.9 (default, Apr 20 2021, 10:15:16) [GCC 9.3.0] linux</span>
<span class="pl-s">"""</span>


<span class="pl-k">import</span> <span class="pl-s1">sqlalchemy_utils</span>
<span class="pl-k">from</span> <span class="pl-s1">sqlalchemy</span> <span class="pl-k">import</span> <span class="pl-v">Column</span>, <span class="pl-v">ForeignKey</span>, <span class="pl-v">Integer</span>, <span class="pl-v">JSON</span>, <span class="pl-s1">create_engine</span>
<span class="pl-k">from</span> <span class="pl-s1">sqlalchemy</span>.<span class="pl-s1">orm</span> <span class="pl-k">import</span> <span class="pl-s1">declarative_base</span>, <span class="pl-s1">relationship</span>, <span class="pl-v">Session</span>

<span class="pl-v">Base</span> <span class="pl-c1">=</span> <span class="pl-en">declarative_base</span>()


<span class="pl-k">class</span> <span class="pl-v">AAA</span>(<span class="pl-v">Base</span>):
    <span class="pl-s1">__tablename__</span> <span class="pl-c1">=</span> <span class="pl-s">'aaa'</span>
    <span class="pl-s1">id</span> <span class="pl-c1">=</span> <span class="pl-v">Column</span>(<span class="pl-v">Integer</span>, <span class="pl-s1">primary_key</span><span class="pl-c1">=</span><span class="pl-c1">True</span>)
    <span class="pl-s1">json_column</span> <span class="pl-c1">=</span> <span class="pl-v">Column</span>(<span class="pl-s1">sqlalchemy_utils</span>.<span class="pl-v">JSONType</span>, <span class="pl-s1">nullable</span><span class="pl-c1">=</span><span class="pl-c1">False</span>)


<span class="pl-k">class</span> <span class="pl-v">BBB</span>(<span class="pl-v">Base</span>):
    <span class="pl-s1">__tablename__</span> <span class="pl-c1">=</span> <span class="pl-s">'bbb'</span>
    <span class="pl-s1">id</span> <span class="pl-c1">=</span> <span class="pl-v">Column</span>(<span class="pl-v">Integer</span>, <span class="pl-s1">primary_key</span><span class="pl-c1">=</span><span class="pl-c1">True</span>)
    <span class="pl-s1">aaa_id</span> <span class="pl-c1">=</span> <span class="pl-v">Column</span>(<span class="pl-v">Integer</span>, <span class="pl-v">ForeignKey</span>(<span class="pl-s">'aaa.id'</span>), <span class="pl-s1">nullable</span><span class="pl-c1">=</span><span class="pl-c1">True</span>)
    <span class="pl-s1">parent</span> <span class="pl-c1">=</span> <span class="pl-en">relationship</span>(<span class="pl-s">'AAA'</span>, <span class="pl-s1">backref</span><span class="pl-c1">=</span><span class="pl-s">'children'</span>)


<span class="pl-k">class</span> <span class="pl-v">CCC</span>(<span class="pl-v">Base</span>):
    <span class="pl-s1">__tablename__</span> <span class="pl-c1">=</span> <span class="pl-s">'ccc'</span>
    <span class="pl-s1">id</span> <span class="pl-c1">=</span> <span class="pl-v">Column</span>(<span class="pl-v">Integer</span>, <span class="pl-s1">primary_key</span><span class="pl-c1">=</span><span class="pl-c1">True</span>)
    <span class="pl-s1">json_column</span> <span class="pl-c1">=</span> <span class="pl-v">Column</span>(<span class="pl-v">JSON</span>, <span class="pl-s1">nullable</span><span class="pl-c1">=</span><span class="pl-c1">False</span>)


<span class="pl-k">class</span> <span class="pl-v">DDD</span>(<span class="pl-v">Base</span>):
    <span class="pl-s1">__tablename__</span> <span class="pl-c1">=</span> <span class="pl-s">'ddd'</span>
    <span class="pl-s1">id</span> <span class="pl-c1">=</span> <span class="pl-v">Column</span>(<span class="pl-v">Integer</span>, <span class="pl-s1">primary_key</span><span class="pl-c1">=</span><span class="pl-c1">True</span>)
    <span class="pl-s1">ccc_id</span> <span class="pl-c1">=</span> <span class="pl-v">Column</span>(<span class="pl-v">Integer</span>, <span class="pl-v">ForeignKey</span>(<span class="pl-s">'ccc.id'</span>), <span class="pl-s1">nullable</span><span class="pl-c1">=</span><span class="pl-c1">True</span>)
    <span class="pl-s1">parent</span> <span class="pl-c1">=</span> <span class="pl-en">relationship</span>(<span class="pl-s">'CCC'</span>, <span class="pl-s1">backref</span><span class="pl-c1">=</span><span class="pl-s">'children'</span>)


<span class="pl-k">def</span> <span class="pl-en">main</span>():
    <span class="pl-s1">eng</span> <span class="pl-c1">=</span> <span class="pl-en">create_engine</span>(<span class="pl-s">'postgresql://postgres@localhost/mcve'</span>, <span class="pl-s1">echo</span><span class="pl-c1">=</span><span class="pl-c1">False</span>)
    <span class="pl-v">Base</span>.<span class="pl-s1">metadata</span>.<span class="pl-en">drop_all</span>(<span class="pl-s1">eng</span>)
    <span class="pl-v">Base</span>.<span class="pl-s1">metadata</span>.<span class="pl-en">create_all</span>(<span class="pl-s1">eng</span>)
    <span class="pl-s1">db_session</span> <span class="pl-c1">=</span> <span class="pl-v">Session</span>(<span class="pl-s1">eng</span>)

    <span class="pl-s1">db_session</span>.<span class="pl-en">add</span>(<span class="pl-v">AAA</span>(<span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-c1">13</span>, <span class="pl-s1">json_column</span><span class="pl-c1">=</span>[<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>]))
    <span class="pl-s1">db_session</span>.<span class="pl-en">add</span>(<span class="pl-v">BBB</span>(<span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-c1">333</span>, <span class="pl-s1">aaa_id</span><span class="pl-c1">=</span><span class="pl-c1">13</span>))

    <span class="pl-s1">db_session</span>.<span class="pl-en">add</span>(<span class="pl-v">CCC</span>(<span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-c1">13</span>, <span class="pl-s1">json_column</span><span class="pl-c1">=</span>[<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>]))
    <span class="pl-s1">db_session</span>.<span class="pl-en">add</span>(<span class="pl-v">DDD</span>(<span class="pl-s1">id</span><span class="pl-c1">=</span><span class="pl-c1">333</span>, <span class="pl-s1">ccc_id</span><span class="pl-c1">=</span><span class="pl-c1">13</span>))
    <span class="pl-s1">db_session</span>.<span class="pl-en">commit</span>()

    <span class="pl-en">print</span>(<span class="pl-s">'<span class="pl-cce">\n</span>this works'</span>)
    <span class="pl-s1">query</span> <span class="pl-c1">=</span> <span class="pl-s1">db_session</span>.<span class="pl-en">query</span>(<span class="pl-v">AAA</span>).<span class="pl-en">with_entities</span>(<span class="pl-v">AAA</span>.<span class="pl-s1">id</span>, <span class="pl-v">AAA</span>.<span class="pl-s1">json_column</span>)
    <span class="pl-k">for</span> (<span class="pl-s1">parent_id</span>, <span class="pl-s1">json_column</span>) <span class="pl-c1">in</span> <span class="pl-s1">query</span>:
        <span class="pl-en">print</span>(<span class="pl-s1">parent_id</span>, <span class="pl-s1">json_column</span>)

    <span class="pl-en">print</span>(<span class="pl-s">'<span class="pl-cce">\n</span>this works also'</span>)
    <span class="pl-s1">query</span> <span class="pl-c1">=</span> <span class="pl-s1">db_session</span>.<span class="pl-en">query</span>(<span class="pl-v">AAA</span>).<span class="pl-en">join</span>(<span class="pl-v">BBB</span>).<span class="pl-en">with_entities</span>(<span class="pl-v">AAA</span>.<span class="pl-s1">id</span>)
    <span class="pl-k">for</span> (<span class="pl-s1">parent_id</span>,) <span class="pl-c1">in</span> <span class="pl-s1">query</span>:
        <span class="pl-en">print</span>(<span class="pl-s1">parent_id</span>)

    <span class="pl-en">print</span>(<span class="pl-s">'<span class="pl-cce">\n</span>this works also. using the JSON type instead of sqlalchemy_utils.JSONType'</span>)
    <span class="pl-s1">query</span> <span class="pl-c1">=</span> <span class="pl-s1">db_session</span>.<span class="pl-en">query</span>(<span class="pl-v">CCC</span>).<span class="pl-en">join</span>(<span class="pl-v">DDD</span>).<span class="pl-en">with_entities</span>(<span class="pl-v">CCC</span>.<span class="pl-s1">id</span>, <span class="pl-v">CCC</span>.<span class="pl-s1">json_column</span>)
    <span class="pl-k">for</span> (<span class="pl-s1">parent_id</span>, <span class="pl-s1">json_column</span>) <span class="pl-c1">in</span> <span class="pl-s1">query</span>:
        <span class="pl-en">print</span>(<span class="pl-s1">parent_id</span>, <span class="pl-s1">json_column</span>)

    <span class="pl-en">print</span>(<span class="pl-s">'<span class="pl-cce">\n</span>but this fails with TypeError: unhashable type: list. '</span>
          <span class="pl-s">'Problem comes from having AAA.json_column in the with_entities() clause, then iterating over the query:'</span>)
    <span class="pl-s1">query</span> <span class="pl-c1">=</span> <span class="pl-s1">db_session</span>.<span class="pl-en">query</span>(<span class="pl-v">AAA</span>).<span class="pl-en">join</span>(<span class="pl-v">BBB</span>).<span class="pl-en">with_entities</span>(<span class="pl-v">AAA</span>.<span class="pl-s1">id</span>, <span class="pl-v">AAA</span>.<span class="pl-s1">json_column</span>)
    <span class="pl-k">for</span> (<span class="pl-s1">parent_id</span>, <span class="pl-s1">json_column</span>) <span class="pl-c1">in</span> <span class="pl-s1">query</span>:
        <span class="pl-en">print</span>(<span class="pl-s1">parent_id</span>, <span class="pl-s1">json_column</span>)


<span class="pl-k">if</span> <span class="pl-s1">__name__</span> <span class="pl-c1">==</span> <span class="pl-s">'__main__'</span>:
    <span class="pl-en">main</span>()</pre></div>
<h3 dir="auto">Error</h3>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ python mcve.py

this works
13 [1, 2, 3]

this works also
13

this works also. using the JSON type instead of sqlalchemy_utils.JSONType
13 [1, 2, 3]

but this fails with TypeError: unhashable type: list. Problem comes from having AAA.json_column in the with_entities() clause, then iterating over the query:
Traceback (most recent call last):
  File &quot;mcve.py&quot;, line 82, in &lt;module&gt;
    main()
  File &quot;mcve.py&quot;, line 77, in main
    for (parent_id, json_column) in query:
  File &quot;/home/jhersch/.virtualenvs/gemini3.6.9/lib/python3.6/site-packages/sqlalchemy/engine/result.py&quot;, line 371, in iterrows
    if hashed in uniques:
TypeError: unhashable type: 'list'"><pre class="notranslate"><code class="notranslate">$ python mcve.py

this works
13 [1, 2, 3]

this works also
13

this works also. using the JSON type instead of sqlalchemy_utils.JSONType
13 [1, 2, 3]

but this fails with TypeError: unhashable type: list. Problem comes from having AAA.json_column in the with_entities() clause, then iterating over the query:
Traceback (most recent call last):
  File "mcve.py", line 82, in &lt;module&gt;
    main()
  File "mcve.py", line 77, in main
    for (parent_id, json_column) in query:
  File "/home/jhersch/.virtualenvs/gemini3.6.9/lib/python3.6/site-packages/sqlalchemy/engine/result.py", line 371, in iterrows
    if hashed in uniques:
TypeError: unhashable type: 'list'
</code></pre></div>
<h3 dir="auto">Versions</h3>
<ul dir="auto">
<li>OS: linux</li>
<li>Python: 3.6.9</li>
<li>SQLAlchemy: reproduces in 1.4.19 through 1.4.23. does NOT reproduce in 1.4.18</li>
<li>Database: postgresql</li>
<li>DBAPI: psycopg2</li>
</ul>
<h3 dir="auto">Additional context</h3>
<p dir="auto">If I look in postgres for the definitions of the relevant tables with JSON columns, I find their schemas are identical up to renames. So problem is certainly not in at the db level. I suppose it's in the ORM, when the json_column value is used. In one case it is converted to something that can be hashed (maybe a JSON string?) and in the other it's left as a list, which cannot be hashed.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="mcve=# \d aaa
                               Table &quot;public.aaa&quot;
   Column    |  Type   | Collation | Nullable |             Default             
-------------+---------+-----------+----------+---------------------------------
 id          | integer |           | not null | nextval('aaa_id_seq'::regclass)
 json_column | json    |           | not null | 
Indexes:
    &quot;aaa_pkey&quot; PRIMARY KEY, btree (id)
Referenced by:
    TABLE &quot;bbb&quot; CONSTRAINT &quot;bbb_aaa_id_fkey&quot; FOREIGN KEY (aaa_id) REFERENCES aaa(id)

mcve=# \d ccc
                               Table &quot;public.ccc&quot;
   Column    |  Type   | Collation | Nullable |             Default             
-------------+---------+-----------+----------+---------------------------------
 id          | integer |           | not null | nextval('ccc_id_seq'::regclass)
 json_column | json    |           | not null | 
Indexes:
    &quot;ccc_pkey&quot; PRIMARY KEY, btree (id)
Referenced by:
    TABLE &quot;ddd&quot; CONSTRAINT &quot;ddd_ccc_id_fkey&quot; FOREIGN KEY (ccc_id) REFERENCES ccc(id)"><pre class="notranslate"><code class="notranslate">mcve=# \d aaa
                               Table "public.aaa"
   Column    |  Type   | Collation | Nullable |             Default             
-------------+---------+-----------+----------+---------------------------------
 id          | integer |           | not null | nextval('aaa_id_seq'::regclass)
 json_column | json    |           | not null | 
Indexes:
    "aaa_pkey" PRIMARY KEY, btree (id)
Referenced by:
    TABLE "bbb" CONSTRAINT "bbb_aaa_id_fkey" FOREIGN KEY (aaa_id) REFERENCES aaa(id)

mcve=# \d ccc
                               Table "public.ccc"
   Column    |  Type   | Collation | Nullable |             Default             
-------------+---------+-----------+----------+---------------------------------
 id          | integer |           | not null | nextval('ccc_id_seq'::regclass)
 json_column | json    |           | not null | 
Indexes:
    "ccc_pkey" PRIMARY KEY, btree (id)
Referenced by:
    TABLE "ddd" CONSTRAINT "ddd_ccc_id_fkey" FOREIGN KEY (ccc_id) REFERENCES ccc(id)
</code></pre></div>
<p dir="auto"><strong>Migrated issue, originally created by Anonymous</strong></p>
<p dir="auto">The code looks like this (skipping a log of details):</p>
<p dir="auto">class visit_dim_category(object):<br>
pass</p>
<p dir="auto">...</p>
<p dir="auto">class schema<br>
...</p>
<p dir="auto">#somewhere in class schema:</p>
<p dir="auto">self.visit_dim_category = Table( "visit_dim_category", self.metadata,<br>
Column("id",Integer, primary_key=True)<br>
,Column("affiliate", Integer, ForeignKey("affiliate.id"))<br>
,Column("product",   Integer, ForeignKey("product.id"))<br>
)</p>
<p dir="auto">Index("visit_dim_category_idx1",self.visit_dim_category.c.affiliate, self.visit_dim_category.c.product, unique=True)</p>
<p dir="auto">...</p>
<p dir="auto">visit_dim_category.mapper = mapper(visit_dim_category, self.visit_dim_category)</p>
<h2 dir="auto"></h2>
<p dir="auto">#creating test db<br>
db = create_engine(conf.connection())<br>
schema = schema(db)<br>
schema.metadata.drop_all()<br>
schema.metadata.create_all()</p>
<p dir="auto">it works fine in 0.2.7 and 0.2.8 but after updrade to 0.3 this code gives the following errors:</p>
<p dir="auto">[04:49 ]cff@joy:~/work/stats3/server/test# ./test_db.py<br>
create test schema...<br>
mysql://root:root@localhost/stat3<br>
Traceback (most recent call last):<br>
File "./test_db.py", line 15, in ?<br>
schema.metadata.create_all()<br>
File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line 862, in<br>
create_all<br>
File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line<br>
413, in create<br>
File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line<br>
437, in _run_visitor<br>
File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line 882, in<br>
accept_schema_visitor<br>
File "build/bdist.linux-i686/egg/sqlalchemy/ansisql.py", line 637,<br>
in visit_metadata<br>
File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line 268, in<br>
accept_schema_visitor<br>
File "build/bdist.linux-i686/egg/sqlalchemy/ansisql.py", line 671,<br>
in visit_table<br>
File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line 819, in<br>
accept_schema_visitor<br>
File "build/bdist.linux-i686/egg/sqlalchemy/ansisql.py", line 749,<br>
in visit_index<br>
File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line<br>
763, in execute<br>
File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line<br>
365, in proxy<br>
File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line<br>
329, in _execute_raw<br>
File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py", line<br>
348, in _execute<br>
sqlalchemy.exceptions.SQLError: (OperationalError) (1061, "Duplicate<br>
key name 'visit_dim_category_idx1'") 'CREATE UNIQUE INDEX<br>
visit_dim_category_idx1 ON visit_dim_category (affiliate, product)' ()</p>