title: PostgreSQL 9.3 operator <> doesn't give logical result
body: <p>I have this code in a trigger:</p>
  
  <pre><code>CREATE TRIGGER customernametrig
    AFTER UPDATE
    ON customers
    FOR EACH ROW
    EXECUTE PROCEDURE  trig();
  </code></pre>
  
  <p>and the function:</p>
  
  <pre><code>CREATE OR REPLACE FUNCTION trig()
    RETURNS trigger AS
  $BODY$
  begin
     if TG_OP='UPDATE' then
      RAISE NOTICE '%', new.customername;
      RAISE NOTICE '%', old.customername;
      RAISE NOTICE '%', new.customername&lt;&gt;old.customername;
      if new.customername&lt;&gt;old.customername then
          RAISE NOTICE 'hi';
      end if;
    end if;
  end;
  $BODY$
    LANGUAGE plpgsql VOLATILE
  </code></pre>
  
  <p>the <code>customername</code> column is of type citext.</p>
  
  <p>When I run update command </p>
  
  <pre><code>Update customers set customername='Jack' where customerid=125;  
  </code></pre>
  
  <p>field it prints:</p>
  
  <pre><code>NOTICE:  Jack
  NOTICE:  jack
  NOTICE:  f
  </code></pre>
  
  <p>But if I run <code>select 'jack'&lt;&gt;'Jack'</code> it gives me: <code>t</code></p>
  
  <p>So What I expect it to print is:</p>
  
  <pre><code>NOTICE:  Jack
  NOTICE:  jack
  NOTICE:  t
  NOTICE:  hi
  </code></pre>
  
  <p>i don't understand this behavior. What is happening here?</p>