================================================================================
on constraint do nothing
================================================================================
insert into foo default values on conflict on constraint foo do nothing;
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (identifier)))))

================================================================================
on conflict column names
================================================================================
insert into foo default values on conflict (foo, bar) do nothing;
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (identifier)
        (identifier)))))

================================================================================
on conflict value expressions
================================================================================
insert into foo default values on conflict (coalesce(one, two), bar) do nothing;
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (function_call
          (identifier)
          (identifier)
          (identifier))
        (identifier)))))

================================================================================
update with default
================================================================================
insert into foo default values on conflict (foo) do update set foo = default;
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (identifier))
      (update_set
        (identifier)
        (update_value)))))

================================================================================
update with expression
================================================================================
insert into foo default values on conflict (foo) do update set foo = 1;
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (identifier))
      (update_set
        (identifier)
        (update_value
          (number))))))

================================================================================
update with expression(1)
================================================================================
insert into foo default values on conflict (foo) do update set (foo) = (1);
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (identifier))
      (update_set
        (identifier)
        (update_value
          (number))))))

================================================================================
update with expression(2)
================================================================================
insert into foo default values on conflict (foo) do update set (foo, bar) = (1, 2, default);
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (identifier))
      (update_set
        (identifier)
        (identifier)
        (update_value
          (number))
        (update_value
          (number))
        (update_value)))))

================================================================================
update with expression(3)
================================================================================
insert into foo default values on conflict (foo) do update set foo = 1, bar = default, baz = (select 1);
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (identifier))
      (update_set
        (identifier)
        (update_value
          (number)))
      (update_set
        (identifier)
        (update_value))
      (update_set
        (identifier)
        (update_value
          (select_statement
            (select_item
              (number))))))))

================================================================================
update with expression(4)
================================================================================
insert into foo default values on conflict (foo) do update set (foo) = (1), bar = default;
--------------------------------------------------------------------------------

(source_file
  (insert_statement
    (identifier)
    (insert_items)
    (insert_conflict
      (conflict_target
        (identifier))
      (update_set
        (identifier)
        (update_value
          (number)))
      (update_set
        (identifier)
        (update_value)))))