"kuzu_copy_from_df works for node and rel tables"
"kuzu_copy_from_df handles various data types"
"CREATE NODE TABLE MixedTypes(
    id INT64,
    name STRING,
    is_active BOOL,
    value FLOAT,
    amount DOUBLE,
    event_date DATE,
    timestamp TIMESTAMP,
    price INT64,
    price2 DECIMAL,
    int8_col INT8,
    int16_col INT16,
    int32_col INT32,
    int128_col INT128,
    uint8_col UINT8,
    uint16_col UINT16,
    serial_col SERIAL,
    PRIMARY KEY (id)
  )"
# Ensure strings are not converted to factors
"MATCH (m:MixedTypes) RETURN m.id, m.name, m.is_active, m.value,"
"m.amount, m.event_date, m.timestamp, m.price, m.price2,m.int8_col,"
"m.int16_col, m.int32_col, m.int128_col, m.uint8_col, m.uint16_col,"
"kuzu_copy_from_df handles empty data frames"
"CREATE NODE TABLE AnotherEmptyTable(id INT64, name STRING, "
"kuzu_merge_df works for insertion and update"
"CREATE NODE TABLE Person(name STRING, current_city STRING, age"
# Alice to be updated, Charlie to be inserted
"MERGE (p:Person {name: name})
  ON MATCH SET p.current_city = current_city, p.age = age
  ON CREATE SET p.current_city = current_city, p.age = age"
"CREATE NODE TABLE CsvLoadedTypes(
    id INT64,
    name STRING,
    is_active BOOL,
    value FLOAT,
    amount DOUBLE,
    event_date DATE,
    timestamp TIMESTAMP,
    price DECIMAL(10,2),
    PRIMARY KEY (id)
  )"
"MATCH (c:CsvLoadedTypes) RETURN c.id, c.name, c.is_active, c.value,"
"c.amount, c.event_date, c.timestamp, c.price ORDER BY c.id"
'[
    {"id": 101, "name": "JSON Item 1", "is_active": true, "value": 5.5},
    {"id": 102, "name": "JSON Item 2", "is_active": false, "value": 10.1}
  ]'
"CREATE NODE TABLE JsonLoadedTable(
    id INT64,
    name STRING,
    is_active BOOL,
    value DOUBLE,
    PRIMARY KEY (id)
  )"
"MATCH (j:JsonLoadedTable) RETURN j.id, j.name, j.is_active, j.value"
"kuzu_copy_from_json handles empty JSON files"
"kuzu handles data types DECIMAL and UUID"
"CREATE NODE TABLE MixedTypes(
  id INT64,
  price DECIMAL,
  uuid_col UUID,
  PRIMARY KEY (id))"