In politics, it’s possible to have logic, and even principle, on your side – and still get it badly wrong. John McDonnell’s change of Labour policy, declaring on Tuesday night that the party “would not block” a second referendum on independence for Scotland, is a case in point.

McDonnell made the argument that any new vote should be for the people of Scotland and their parliament to determine. “We would not block something like that. We would let the Scottish people decide. That’s democracy.” The notion of Holyrood voting for a referendum, only for a future Labour government in Westminster to stand in its way, is indeed hard, if not impossible, for any democrat to defend. Sure, some will argue that Scotland had its once-in-a-generation chance to decide in 2014. But that’s tricky to sustain when Labour is (sort of) committed to holding a second referendum on Brexit, even though that decision was supposedly settled just three years ago. Surely democratic consistency demands precisely the stance McDonnell has now taken.

And yet the way the shadow chancellor made this move could hardly have been worse. First, he said this: “The Scottish parliament will come to a considered view … and they will submit that to the government and the English parliament itself.” Doubtless, he will insist it was a mere slip of the tongue, but to refer to Westminster as “the English parliament”, when it is of course the sovereign body of the entire UK, is far more serious than that. At a stroke, McDonnell was confirming the nationalist view that sees Scotland as ruled by England, rather than as a member of a union of nations. It also suggests McDonnell has forgotten the 59 MPs who represent Scottish constituencies in Westminster – seven of them for his own party.

That itself points to a larger problem with the manner of McDonnell’s statement. In March, the leader of the Scottish Labour party, Richard Leonard, said that a future UK Labour government would refuse to grant the so-called section 30 order required for another vote on independence. McDonnell’s remarks reverse that entirely. You might imagine that such a major shift on such a profound constitutional question would come after a serious process of debate and consultation inside the Labour party, and inside Scottish Labour in particular. Once that process was complete, perhaps the right person to have made the announcement would have been Leonard himself (who, it’s worth saying, is a loyal supporter of McDonnell and Jeremy Corbyn). Instead, it came from an MP for an English constituency, delivered off-the-cuff during an on-stage interview at the Edinburgh festival. That hardly conveys respect for the Scottish Labour party – so often derided as a “branch office” of UK Labour – or for the union itself.

McDonnell’s motive for dropping Labour’s opposition to a fresh independence vote is not mysterious: he wants to be able to offer a referendum to the Scottish National party in talks following a hung parliament at a possibly imminent general election. He reckons that, in return, the SNP would sustain a minority Labour government in office.

The trouble is, Labour has historically been a party of the union. It was a former Labour prime minister, Gordon Brown, who made the most stirring case for the union in the closing days of the 2014 campaign, arguing that socialists and internationalists should always stand for cooperation and shared sovereignty, of the kind embodied by the centuries-old union. Now McDonnell has signalled that Labour is ready to jettison all that for party advantage. At a stroke it robs Labour of the ability to lay precisely that charge against the Tories, who are themselves jeopardising the union in their pursuit of a hard Brexit. Now Labour will need to hold their tongues, because McDonnell’s move proves they too are ready to risk the union if it serves their party interests to do so.

And yet the most obvious objection to McDonnell’s move is far less high-minded. It is simply that it was wholly unnecessary. As the Scottish Labour MP Ian Murray told the BBC this morning, it would be “extraordinary” for the SNP to vote down a minority Labour government and usher Boris Johnson back into Downing Street, even if they got nothing from Labour in return. The SNP’s own supporters would not forgive them for reinstalling a Tory government. Put simply, Labour wouldn’t need to pay the high price for SNP backing that McDonnell has shown he is willing to pay. He’s made a concession he didn’t need to make, which does not augur well for the negotiating skills of a future Labour government.

It may be hard to argue with the democratic logic of Labour’s new stance, but the manner, timing and politics of it are a mess. John McDonnell is not the first to learn that if you’re going to make a splash at the Edinburgh festival, it’s best to prepare well in advance.

• Jonathan Freedland is a Guardian columnist