• @Chewbaccabra
    link
    English
    4817 hours ago

    NULL != ‘NULL’

    How do devs make this mistake

    • @kava
      link
      English
      3
      edit-2
      2 hours ago

      How do devs make this mistake

      it can happen many different ways if you’re not explicitly watching out for these types of things

      example let’s say you have a csv file with a bunch of names

      id, last_name
      1, schaffer
      2, thornton
      3, NULL
      4, smith
      5, "NULL"
      

      if you use the following to import into postgres

      COPY user_data (id, last_name)
      FROM '/path/to/data.csv'
      WITH (FORMAT csv, HEADER true);
      

      number 5 will be imported as a string “NULL” but number 3 will be imported as a NULL value. of course, this is why you sanitize the data (GIGO) but I can imagine this happening countless times at companies all over the country

      there are easy fixes if you’re paying attention

      COPY user_data (id, last_name)
      FROM '/path/to/data.csv'
      WITH (FORMAT csv, HEADER true, NULL '');
      

      sets the empty string to NULL value.


      example with js

      fetch('/api/user/1')
        .then(response => response.json())
        .then(data => {
          if (data.lastName == "null") {
            console.log("No last name found");
          } else {
            console.log("Last name is:", data.lastName);
          }
        });
      

      if data is

      data = {
        id: 5,
        lastName: "null"
      };
      

      then the if statement will trigger- as if there was no last name. that’s why you gotta know the language you’re using and the potential pitfalls

      now you may ask – why not just do

      if (data.lastName === null)
      

      instead? But what if the system you’re working on uses JSON.parse(data) and that auto-converts everything to a string? it’s a very natural move to check for the string "null"

      obviously if you’re paying attention and understand the pitfalls of certain languages (like javascript’s type coercion and the particularities of JSON.parse()) it becomes easy but it’s something that is honestly very easy to overlook

    • @[email protected]
      link
      fedilink
      English
      17
      edit-2
      15 hours ago

      It’s baffling to me. Maybe I’m just used to using “modern” frameworks, but the only way this could be an issue is if you literally check if the string value equals “null” and then replace it with a null value.

      lastName = lastName.ToUpper() == "NULL" ? null : lastName;

      Either that or the database has some bug where it’s converting a string value of “null” into a null.

      • @[email protected]
        link
        fedilink
        English
        715 hours ago

        That is something I’ve had to do on rare occasions because people set up and store info in stupid ways…

    • @Gonzako
      link
      English
      317 hours ago

      How do devs make off by one mistakes.

      • @[email protected]
        link
        fedilink
        English
        12 hours ago

        The most common source of security vulnerabilities is memory corruption and off by one errors.